条件分岐
条件分岐は、特定の条件に基づいてプログラムの実行パスを変更する構造です。
if文
最も基本的な条件分岐構造です:
if (条件) {
// 条件が真の場合に実行される処理
}
if-else文
条件が偽の場合の処理も指定できます:
if (条件) {
// 条件が真の場合に実行される処理
} else {
// 条件が偽の場合に実行される処理
}
if-else if-else文
複数の条件を連続して評価できます:
if (条件1) {
// 条件1が真の場合に実行される処理
} else if (条件2) {
// 条件1が偽で、条件2が真の場合に実行される処理
} else {
// どの条件も偽の場合に実行される処理
}
switch文
複数の選択肢から一致するものを選ぶ場合に便利です:
switch (変数) {
case 値1:
// 変数が値1と等しい場合の処理
break;
case 値2:
// 変数が値2と等しい場合の処理
break;
default:
// どの値とも一致しない場合の処理
}
Java 12からは新しいswitch式も導入されています:
String result = switch (day) {
case "MONDAY", "FRIDAY" -> "8時出勤";
case "TUESDAY", "THURSDAY" -> "9時出勤";
case "WEDNESDAY" -> "在宅勤務";
case "SATURDAY", "SUNDAY" -> "休日";
default -> "不明";
};
繰り返し文
繰り返し文(ループ)は、同じコードブロックを複数回実行するための構造です。
for文
回数が決まっている繰り返しに適しています:
for (初期化; 条件; 更新) {
// 繰り返し実行される処理
}
// 例:1から10までの数字を表示
for (int i = 1; i <= 10; i++) {
System.out.println(i);
}
拡張for文(for-each)
配列やコレクションの要素に対して繰り返し処理を行う場合に便利です:
for (要素の型 変数名 : 配列またはコレクション) {
// 各要素に対して実行される処理
}
// 例:配列の各要素を表示
int[] numbers = {1, 2, 3, 4, 5};
for (int num : numbers) {
System.out.println(num);
}
while文
条件が真である間、処理を繰り返します:
while (条件) {
// 条件が真の間、繰り返し実行される処理
}
// 例:1から10までの数字を表示
int i = 1;
while (i <= 10) {
System.out.println(i);
i++;
}
do-while文
最初に処理を1回実行し、その後条件が真である間、処理を繰り返します:
do {
// 少なくとも1回は実行され、条件が真の間、繰り返される処理
} while (条件);
// 例:1から10までの数字を表示
int i = 1;
do {
System.out.println(i);
i++;
} while (i <= 10);
ジャンプ文
ジャンプ文は、プログラムの制御フローを変更するための文です。
break文
ループやswitch文の実行を中断して、その外側に制御を移します:
// 例:5になったらループを抜ける
for (int i = 1; i <= 10; i++) {
if (i == 5) {
break; // ループを抜ける
}
System.out.println(i);
}
// 出力結果:1, 2, 3, 4
continue文
ループの現在の繰り返しをスキップして、次の繰り返しに進みます:
// 例:偶数のみを表示
for (int i = 1; i <= 10; i++) {
if (i % 2 != 0) {
continue; // 奇数の場合はスキップ
}
System.out.println(i);
}
// 出力結果:2, 4, 6, 8, 10
return文
メソッドの実行を終了し、呼び出し元に制御を戻します:
public int sum(int a, int b) {
return a + b; // メソッドを終了し、a + bの値を返す
}
ラベル付きブレーク
ネストしたループからの脱出などに使用できます:
outerLoop: for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 3; j++) {
if (i * j > 4) {
break outerLoop; // 外側のループも抜ける
}
System.out.println(i + "*" + j + "=" + (i*j));
}
}