Thinking In Java筆記(第四章 控制執行流程)

來源:互聯網
上載者:User

標籤:控制   執行流程   for   continue   java流程式控制制   

第四章 控制執行流程

    Java中使用了C的所有流程式控制制語句。在Java中涉及的關鍵字包括if-else,while,do-while,for,return,break,continue以及選擇語句switch。然而Java不支援goto語句(該語句引起了許多的反對意見),但是Java仍然可以類似goto那樣跳轉。

4.1 True和False

    所有的條件陳述式都利用條件運算式的真假來決定執行的路徑。Java中不允許我們將一個數字作為boolean值使用,雖然C和C++中是允許的(“非零”為真,”零”為假)。

4.2 if-else

    if-else語句是控製程序流程最基本形式。其中else是可選的。有如下兩種使用的方式:

if(boolean-exp){    ...}if(boolean-exp){    ...} else {    ...}
4.3迭代

    while,do-while,for用來控制迴圈,有時將她們劃分為迭代語句(iteration statement)。語句會重複執行直到條件滿足或者條件不滿足。while語句的格式如下:

while(boolean-exp){    ...}

    再迴圈剛開始的時候,會計算一次boolean-exp的值,而在語句的下次迭代開始前會再計算一次。

4.3.1 do-while

    do-while和while唯一區別就是do-while中的語句至少會執行一次。

4.3.2 for迴圈

    for迴圈在第一次迭代之前要進行初始化,之後會進行條件測試,每次迴圈結束之後都以某種方式步進。

4.3.3 逗號操作符

    逗號操作符(不是逗號分隔字元),Java中唯一用到逗號操作符的地方就是for迴圈的控製表達式。在控製表達式的初始化和步進控制部分,可以使用一系列的逗號分隔的語句;

4.4 Foreach文法

    Java SE5引入了一種更加簡潔的for語句用於數組和容器,能簡易的遍曆每一項。

public class Test{    public static void main(String[] args){        Random rand = new Random(47);        float f[] = new float[10];        for(int i = 0; i < 10; i ++)             f[i] = rand.nextFloat();        for(floar x : f)            System.out.println(x);    }}

    foreach語句能試用於任何的實現了Iterable介面的對象。使用foreach不僅在錄入代碼時可以節省時間,更重要的是,它閱讀起來也要容易得多,它閱讀起來也要容易得多,閱讀起來能讓人明白正在做什麼,而不是類似於for(int i=0; i<100;i++)的告訴人如何做的細節。

4.5 return

    Java中有如下幾個關鍵詞表示無條件跳轉,return、break、continue和一種類似於其他語言中goto的標記。

return有兩方面的用途:

  • 一方面指定一個方法返回什麼值(假設它沒有void傳回值)
  • 另一方面會導致當前的方法退出,並返回那個值。
4.6 break和continue

    在任何迭代語句的主體部分,都可用break和continue控制迴圈的流程。break關鍵字用於強行退出迴圈,不執行迴圈中剩餘的部分。continue則是停止當前執行的一次迴圈,直接開始下一次的迴圈迭代。下面的例子:

public class Test {    public static void main(String[] args) {        for(int i=0; i<100; i++) {            if(i == 74) break;            if(i%9 != 0)continue;               System.out.println(i + " ");        }    }}

    上面的輸出結果為:

0 9 18 27 36 45 54 63 72

    到74的時候就break出來了,而當i不能被9整除時,continue(也就是繼續下一次迴圈)。

4.7 臭名昭著的goto

    goto語句實際上起源於組譯工具的程式控制: 若條件A成立,則跳到這裡;否則跳到那裡。如果閱讀由編譯器最終產生的彙編代碼,就會發現程式控制裡麵包含了很多的跳轉。(Java編譯器產生它自己的”彙編代碼”,運行在Java虛擬機器上面,而不是直接在cpu硬體上面的)。

    goto是在源碼級上面的跳轉。不多介紹了,最好不用,用了會使原始碼變的很難閱讀。

4.8 switch

    switch有時也被規劃成一種選擇語句。根據整數運算式的值,switch語句可以從一系列代碼中選出一段去執行,格式如下:

switch(integeral-selector) {    case integral-value1 :        statement1 ;        break;    case integral-value2 :        statement2 ;        break;    case integral-value3 :        statement3 ;        break;    default:        statement4;}

    integeral-selecotr是一個能夠產生整數值的運算式,switch能將這個結果與每個integral-value(整數值)相比較。若發現相符的,就執行下面對應的語句。若沒發現相符的語句,就執行default中包含的語句塊。

    每個case最後都有一個break;語句這樣可以使執行流程跳轉到switch主體的末尾。如果case中沒有break,則會繼續執行後面的case語句,不管是否滿足case,直到遇見第一個break;為止。

Thinking In Java筆記(第四章 控制執行流程)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.