// 單行語句可省略大括號(不推薦,易出錯)
if (score >= 60) System.out.println("及格");
// 代碼塊(推薦)
if (score >= 60) {
System.out.println("及格");
} else {
System.out.println("不及格");
}
// 多重分支
if (score >= 90) grade = 'A';
else if (score >= 80) grade = 'B';
else if (score >= 70) grade = 'C';
else grade = 'D';
最佳實踐:永遠用大括號,避免「懸空 else」與維護時漏加語句導致邏輯錯誤。
while (condition) {
// body
}
do {
// body
} while (condition);
for (int i = 1; i <= 10; i++) {
// i 作用域僅限 for 塊內
}
Java 5+ 增強 for(for-each)遍歷數組/集合:
for (String s : list) { ... } // 僅讀遍歷,無索引、無法刪除
switch (day) {
case 1: case 2: case 3: case 4: case 5:
System.out.println("工作日"); break;
case 6: case 7:
System.out.println("週末"); break;
default:
System.out.println("非法輸入");
}
char、byte、short、int、String(Java 7+)、enum。long、float、double、boolean。break 缺失會「貫穿」執行下一 case,極少數場景故意利用(需註釋 // fall through)。用於跳出多層嵌套循環:
outer: for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
if (matrix[i][j] == target) {
System.out.println("Found at " + i + "," + j);
break outer; // 直接跳出外層循環
}
}
}
continue outer; 同理跳過外層當前迭代。慎用,降低可讀性;優先考慮提取方法返回、異常跳出、標志變量。
list.stream().filter(...).findFirst() 替代查找循環。switch (obj) { case String s -> ...; case Integer i -> ...; } 類型安全分支。