授業で習ったJavaの復習をつらつらと

# はじめに

これは自分が授業で習った内容の復習、また**クラスメイトの手助けや改善策をつらつらと書いていくノートのような投稿**です。Javaを用いた実践的なアプリを作ったり、すごい人たちのように「この関数は挙動が～だ！」みたいな知識は出てきません。悪しからず。あと100%鵜呑みにしないように。

- 推奨環境：Visual Studio Code
`だってEclipse重いじゃん。`
    
    拡張機能で「terminal」と「Language Support for Java(TM) by Red Hat」を入れるといいよ。それ以外は好み。

# 最初の一歩

まずは慣習のHello World!を。

```java/hello.java
public class Hello
{
    public static void main(String[] args)
    {
        System.out.println("hello World!");
    }
}
```

Javaの最初、「public class Hello」は必ず必要な構文。おまじないだと思って。
今回大事なのは「System.out.println("Hello World!");」だ。この**println関数を使うとコンソールに文字を出力できる**。文字列を扱う場合は「""」で囲む必要がある。
ちなみに、print関数もある。構文を変えて実行しなおすとわかるが、Hello World!を出力したあとに改行をするかどうかの違いである。
また、Javaでは**構文の終わりに「;」を入力する**必要がある。入力しないと実行ファイル変換できずにエラーを吐いて終了するだけなので打って。

上の構文を入力し終わったら、terminalを開いて(VScodeなら右クリックで開けるよ)ターミナル上で「javac Hello.java」と入力。ファイルがある場所で打ってね。
Hello.classができたら、「java Hello」と入力。.classは打たなくてOK。無事ターミナルで挨拶出来たら次に進もう。

### ここのまとめ

- println関数
- print関数

# 変数

Javaに限らず、コードを書くときはまず最初に変数を記述する(宣言)。だいたいどの言語でも同じようなものがでてくる。

```java/Dec.java
public class Dec
{
    public static void main(String[] args)
    {
        int num; //整数型4バイトの変数
        num = 3; //値を代入
        short num2 = 15; //整数型2バイトの変数(同時に値を入れている)

        boolean aaaa; //trueもしくはfalse
        double bbbb; //8バイト倍精度浮動小数点数
        float cccc; //4バイト倍精度浮動小数点数
        char str; //2バイト文字
    }
}
```

まだあるけど割愛。授業であんまり使わないし...
宣言と同時に値を代入できるので分ける必要はない。

### ここのまとめ

- 基本的な型の宣言

# 型同士の計算/変換

ここでは単純な計算、int型をdouble型に変換したりする。
まずは計算

```java/Math.java
public class Math
{
    public static void main(String[] args)
    {
        int num1 = 12;
        int num2 = 34;

        answer = num1 + num2; //プログラミングでの計算は順序が逆！
                                                   //計算した結果を代入しているため

        System.out.println(answer); //変数を出力する場合「""」はつけない
    }
}
```
実行すると当然46になる。
今回はint型同士の計算なので楽だったが、double型が混ざっていると実行できない。Javaでは**違う型同士の計算はできない**のだ。
これを回避する方法はint型をdouble型に変換するしかない。

```java/Cast.java
public class Cast
{
    public static void main(String[] args)
    {
        int inum = 1;
        double dnum = 2.5;

        //下の行は実行できない
        //answer = inum + dnum;

        answer = (double)inum + dnum; //カッコで変換したい型を入力、計算すると実行できる！

        System.out.println(answer);
    }
}
```

実行結果は当然3.5だ。小数点以下の0がたくさん出るが仕様。
int型をshort型等、小さい型への代入は注意が必要。意図しない数字になるかもしれないので注意。

### ここのまとめ

- 型同士の計算
- 型変換

# if文/switch文

このあたりからプログラミングらしくなる。
if文はズバリ、「〜でなかったら...する」という文だ。自由に条件を設定できるので目的に沿った条件を書けるかがポイント。

```java/If.java
public class If
{
    public static void main(String[] args)
    {
        int num = 4;

        if(num <= 5) //numが5以下だったら中の文を実行する
        {
            System.out.println("numの値は" + num + "なので5以下でした。");
            //文と型の値を同時に出力するときは+でつなぐ
        }
        else //elseで上のとき以外を実行する文が書ける
        {
            System.out.println("5より大きい数字だった");
        }
    }
}
```

if文は上から順番に条件にあっているか見ていくのに対し、switch文ではリストを作って見やすくできる。

```java/Switch.java
public class Switch
{
    public static void main(String[] args)
    {
        int num = 2;

        switch(num)
        {
            case 0:
                System.out.println("numは0");
                break; //switch文の処理を終わらせる構文
            case 1:
            case 2: //break文を打たないと順番に実行してしまう仕様を逆手に取っている
            case 3:
                System.out.println("0 < num < 4");
                break;
            default:
                System.out.println("3より大きい(適当)"); //default文でどれにも当てはまらない条件の実行方法を記述できる
        }
    }
}
```
switch文とif文では「見やすい」くらいの違いしかないです。多分。
if文を長ったらしく書くならswitch文のほうがいいし、2つしかない条件ならわざわざswitch文を選ぶ必要はない。頭の中で追いかけやすい方の関数を使うのが妥当だろう。

### ここのまとめ

- if文
- switch文

長くなると見るのも書くのもきついから分けます。part2とかにして順々に...