Java

【入門】if, switch, for, while【様々な言語に共通】

条件分岐と繰り返し JavaもCと同じようにif文、switch-case文、for文、while文、do-while文がある。 do-while文はやらなくてもOK
目次
  1. if文
  2. switch-case文
  3. for文
    • おまけ: 拡張for文
  4. while文, do-while文

if文

基本的にC言語と同じだが、括弧内の値は真偽値(booleanもしくはBoolean)である必要がある。

int a = 1;
if (a == 1) {
    System.out.println("a is one");
} else if (a > 1) {
    System.out.println("a is bigger than one");
} else {
    System.out.println("a is smaller than one");
}

条件を網羅していれば、ifとelseだけでreturnできる。

boolean isEven(int x) {
    if (x % 2 == 0) {
        return true;
    } else {
        return false;
    }
}

注意: 今回はあくまでifの説明のためにこのような関数を作って説明しているだけで、本来はreturn x % 2 == 0;とすべきである。

switch-case文

これも基本的にCと同じ。括弧内に判定させたい変数を、caseに一致するか確かめたい定数を書く。caseに変数を指定することは不可能。また、参照型であってもcaseにnullを指定することは不可能(コンパイルエラー)。

switch-case文で使えるのはintからbyteまでのプリミティブ型(int, char, short, byte)、それらのラッパークラス(Integer, Character, Short, Byte)、String、列挙型(あとでやる)のみ。

String str = "String";
switch (str) {
    case "boolean":
        System.out.println("bool");
        break;
    case "int":
    case "short":
    case "long":
        System.out.println("integer");
        break;
    case "String":
        System.out.println("string");
        break;
    default: 
        System.out.println("other");
        break;
}
// string

一つ注意しなければいけないのが、参照型の場合switchの括弧内に渡す変数がnullの場合、NullPointerExceptionが発生するということ。これは、参照型の場合には一致するかの判定をequalsメソッドでしているため。

for文

これも基本的にCと同じだが、ループ変数をforの括弧内で宣言できる。

for (int i = 0; i < 10; i++) {
    System.out.println(i); // 0~9まで出力される
}

配列をforで回すときは継続条件のところで配列.lengthを使うのが一般的。

int[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
for (int i = 0; i < array.length; i++) {
    System.out.println(array[i]); // 1~10まで出力される
}

おまけ: 拡張for文

配列を扱う際、ループ変数が不要なときは拡張for文を使うこともできる。

int[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
for (int num : array) {
    System.out.println(num); // 1~10まで出力される
}

要素を直接取得できるのでループ変数が不要なときはこちらのほうが良い。

while文, do-while文

こちらもCと基本的に同じ。 ただし、ifと同じく条件には真偽値のみ使用可能。無限ループはwhile(1)ではなくwhile(true)を使う。 do-whileも同様。

int i = 0;
while (i < 5) {
    System.out.println(i);
    i++;
}
int i = 0;
do {
    System.out.println(i);
    i++;
} while (i < 5);

どちらも0~4が出力される。