1. 程式人生 > >【Java程式設計思想筆記】第四章-流程控制

【Java程式設計思想筆記】第四章-流程控制

  • 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用於迭代語句時規則:

    1. 一般的continue會退回到最內層迴圈的開頭,並繼續執行迴圈。
      帶標籤的continue會到標籤的位置,並重新進入緊接在那個標籤後面的迴圈。
    2. 一般的break會中斷並跳出當前迴圈。
    3. 帶標籤的break會中斷並跳出標籤所指的迴圈。

在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,儘管它並沒有任何實際的用處。