【Java程式設計思想筆記】第四章-流程控制
阿新 • • 發佈:2019-02-04
- Foreach迴圈可用於陣列,以及實現了java.util.Iterator介面的物件。
public interface Iterable<T> {
Iterator<T> iterator();
}
- 如果在返回void的方法中沒有return語句,那麼在該方法的結尾處會有一個隱式的return,因此在方法中並非總是必須要有一個return語句。但是,如果一個方法宣告它將返回void之外的其他東西,那麼必須確保每一條程式碼路徑都將返回一個值。
int i;
for (i = 0; i <= 5; i++) {
if (i == 2 ) {
break;//退出時i不會再遞增,但continue會
}
}
System.out.println("i=" + i);//2
for(;;)
與while(ture)
等效。
儘管goto仍是Java中的一個保留字,但在語言中並未使用它,Java沒有goto。但可使用帶標籤的 continue或break來完成類似的跳轉操作。
帶標籤與不帶標籤的continue、break用於迭代語句時規則:
- 一般的continue會退回到最內層迴圈的開頭,並繼續執行迴圈。
帶標籤的continue會到標籤的位置,並重新進入緊接在那個標籤後面的迴圈。 - 一般的break會中斷並跳出當前迴圈。
- 帶標籤的break會中斷並跳出標籤所指的迴圈。
- 一般的continue會退回到最內層迴圈的開頭,並繼續執行迴圈。
在Java裡需要使用標籤的唯一理由就是因為有迴圈巢狀存在,而且想從多層巢狀中break或continue到外層迴圈外。
標籤只能緊跟在迴圈語句前(注:如果中間還有其他語句,則continue與break語句編譯出錯,但如果標籤不應用到continue與break中,則不會有問題)
int i = 0, j = 0;
outer:
// !! 注,標籤的下面不能寫任何其他非迭代語句
for (; i < 5; i++) { // 死迴圈
inner:
// !! 注,標籤的下面不能寫任何其他非迭代語句
for (; j < 10; j++) {
System.out.println(("i=" + i + " j = " + j));
if (j == 2) {
System.out.println("continue");
continue;// 回到內層迴圈起始處繼續執行內層迴圈,j會自動遞增
}
if (j == 3) {
System.out.println("break");
// 為了下次迴圈不再走該分支,則要使用i遞增1,因為break後j不會自動遞增
j++;
break;// 跳出內層迴圈,回到外層迴圈起始處繼續執行外層迴圈
}
if (j == 7) {
System.out.println("continue outer");
// 由於帶標籤的continue跳到了外層迴圈起始處,所以j不會自動遞增,但為了
// 下一次不再走該分支,所以要手動遞增1
j++;
continue outer;
}
if (j == 8) {
System.out.println("break outer");
break outer;// 當j為8時,退出內外層迴圈,實質上執行最後列印語句
}
for (int k = 0; k < 5; k++) {
if (k == 3) {
System.out.println("continue inner");
// j為0、1、4、5、6時分別會執行一遍
continue inner;
}
}
}
}
// 由於 break outer 跳出,所以i不會遞增,最後還是2
System.out.println(("i = " + i));
switch(integer-selector){
case integer-value1: statement;break;
case integer-value2: statement;break;
case integer-value3: statement;break;
//…
default: statement;break;
}
switch語句是可用的選擇資料型別有 int、char、enum。
case均以一個break結尾,這樣可使執行流程跳轉至switch主體的末尾。這是構建switch語句的一種傳統方式,但break是可選的。若省略break,會繼續執行後面的case語句,直到遇到一個break為止。注意最後的default語句沒有break,因為執行流程已到了break的跳轉目的地。當然,如果考慮到程式設計風格方面的原因,完全可以在default語句的末尾放置一個break,儘管它並沒有任何實際的用處。