パーフェクトJava読書メモ chapter 10 Javaプログラムの実行と制御構文
Javaを使うために改訂2版 パーフェクトJavaを読んだメモ
条件分岐
if-else文
インデントの取り方に関係なく else
は最も近い(直近の) if
にかかる
switch-case文
switch(式) {
case 定数1:
0個以上の文
case 定数N:
0個以上の文
default:
0個以上の文
}
式の評価値は以下
- int 型
- int 型に暗黙に型変換される型
- char
- byte
- short
- 数値ラッパークラス
- Integer
- Character
- Byte
- Short
- enum 型
- String 型
式が null
になると NullPointerException
が発生する
break;
文がない限り処理を続ける
int i = 0;
switch (i) {
case 0:
System.out.println(0);
case 1:
System.out.println(1);
default:
System.out.println("default");
}
0
1
default
繰り返し
for文
for (初期化式; 条件式; 更新式) {
文
}
条件式は評価値が boolean
もしくは Boolean
初期化式と更新式は複数の式を ,
で区切って書ける
for (int i = 0, j = 0; (i < 10 && j < 10); i++, j++) {
}
異なる型の宣言と初期化を並べるとエラー
for (int i = 0, byte j = 0; (i < 10 && j < 10); i++, j++) {
}
for文の外に出して回避
int i;
byte j;
for (i = 0, j = 0; (i < 10 && j < 10); i++, j++) {
}
ジャンプ
break文
- ループを抜ける
- ループがネストしている場合、抜けるのは内側のループのみ
continue文
- ループ内の文をスキップしてループの条件式の評価に戻る
ラベル
- 繰り返しにラベルをつける
- break文、continue文にラベルを渡すことでどの繰り返しを対象にするか定める
target_loop:
while (true) {
while (true) {
break target_loop;
}
}
- 外側の while ループに
target_loop
というラベルがつく break target_loop
で外側の while ループを抜ける- (
continue
の場合は対象のループ内の文をスキップして条件式の評価に戻る)