參考自–《Java核心技術卷1》
文章目錄
控制流程
Java使用條件語句和循環結構確定控制流程。
1 塊作用域
塊(block)即複合語句,指由一對大括號括起來的若干條簡單的 Java 語句。
塊確定了變量的作用域。一個塊可以嵌套在另一個塊中。
public static void main(String[] args){
int n;
...
{
int k;
} // 變量k只有在該塊中才能被識別
}
但,不能在嵌套的兩個塊中聲明同名的變量:
public static void main(String[] args){
int n;
...
{
int n; //錯誤,無法通過編譯
}
}
2 條件語句
if + else 語句
if(condition) statement
if(condition) statement1 else statement2
注:else 子句與最鄰近的 if 構成一組
3 循環
3.1 while 循環
當條件爲真(true)時執行:
while(condition) statement
3.2 do/while 循環
先執行循環體,再檢測循環條件。循環體至少執行一次。
do statement while(condition)
3.3 for 循環
for 循環語句是支持迭代的一種通用結構,利用每次迭代之後更新的計數器或者類似的變量來控制迭代次數。
for 語句的:
-
第 1 部分通常用於對計數器初始化(該部分定義的變量作用域爲整個循環體) ;
-
第 2 部分給出每次新一輪循環執行前要檢測的循環條件 ;
-
第 3 部分指示如何更新計數器。
for(int i=1;i<=10;i++){
//這三部分的內部並非固定的,需要靈活使用
...
}
注:在循環中,檢測兩個浮點數是否相等需要格外小心。如:for(double x=0;x!=10;x+=0.1)
就可能永遠不會結束。由於舍入的誤差,最終可能得不到準確值(上述 0.1 無法精確地用二進制表示)。
注:在 for 循環內部定義的變量,無法在循環體之外使用。因此,如果需要使用,可以先在循環體外部聲明。
4 多重選擇:switch 語句
處理多個選項。
Scanner in = new Scanner(System.in);
System.out.println("Select an option(1,2,3,4)");
int choice = in.nextInt();
switch(choice){
case 1:
...
break;
case 2:
...
break;
case 3:
...
break;
case 4:
...
break;
default:
// 1,2,3,4之外的輸入
...
break;
}
switch 語句將從與選項值相匹配的 case 標籤處開始執行直到遇到 break 語句,或者執行到 switch 語句的結束處爲止。如果沒有相匹配的 case 標籤,而有 default 子句,就執行 default 子句(壞的輸入)。
注:switch 語句使用較少(因爲如果缺少break語句的話,常常會引發錯誤)。
5 中斷控制流程語句
5.1 break
- 不帶標籤的break(一般使用的)
- 帶標籤的break(用於跳出多重嵌套的循環語句)
帶標籤的break:
read_data:
while(...){
...
for(...){
...
if(...)
break read_data;
//跳出至標籤指示的while循環
...
}
...
}
//跳出 read_data 循環後繼續由此開始執行以下語句
...
注:事實上,可以將標籤應用到任何語句中。
5.2 continue
與 break 一樣,它可以中斷正常的控制流程。continue 語句將控制轉移到最內層循環的首部。
While(...){
...
if(...)
continue; //跳至循環的首部(判斷循環部分)
... //如果執行了continue,這部分語句將在此次循環中不執行
}
如果執行了 continue ,則會直接越過 當前循環的剩餘部分,立刻跳到循環首部。
注:如果是 for 循環,則 continue 將直接跳至 for 循環的"更新"部分(第3部分)。
注:帶標籤的 continue 語句,將跳到與標籤匹配的循環首部。