Java010return_break_continue_label_switch_enum

Java010 return_break_continue_label_switch_enum

①return

②break

③continue

④label:

⑤switch和enum

a. switch

b. enum

 

Java010 return_break_continue_label

在Java中有很多關鍵詞表示無條件分支,它們只是表示這個分支無需任何測試即可發生。這些關鍵字包括return/break/continue/和一個與其他語言中的goto類似的跳轉到標號語句的方式。

①return

return關鍵字有兩方面的用途:一方面指定一個方法返回什麼值(假設它沒有void返回值),另一方面它會導致當前方法的退出,並返回那個值。

如果在返回void的方法中沒有return語句,那麼在該方法結尾處會有一個隱式的return,因此在方法中並非總是必須要一個return語句。但是,如果一個方法聲明它將返回void之外的其他東西,那麼必須確保每一條代碼路徑都將返回一個值。

②break

break用於強行退出循環,不執行循環中剩餘的語句。

③continue

continue用於停止當前的迭代,然後退回循環起始處,開始下一次迭代。

④label:

標籤是後面跟有冒號的標識符。

Java中,標籤起作用的唯一地方剛好是迭代語句之前。“剛好之前”的意思表明,在標籤和迭代之間置入任何語句都不好。而在迭代之前設置標籤的唯一理由是:我們希望在其中嵌套另一個迭代或者一個開關。這是由於break和continue關鍵字通常只中斷當前循環,但若隨同標籤一起使用,它們就會中斷循環,直到標籤所在的地方,格式如下:

lable1:

outer-iteration{

inner-iteration{

//...

break;//(1)中斷內部迭代,回到外部迭代

//...

continue;//(2)將執行點移回內部迭代的起始處

//...

continue lable1;//(3)同時中斷內部迭代以及外部迭代,直接轉到label1處,隨後繼續迭代過程,但卻是從外部迭代開始

//...

break label1;//(4)中斷所有迭代,並回到label1處,但並不重新進入迭代,實際是完全終止了兩個迭代。

}

}

 

在Java裏需要使用標籤的唯一理由就是因爲有循環嵌套存在,而且想從多層嵌套中break或continue。

在Dijkstra的《Goto有害》的論文中,他最反對的就是標籤,而非goto。他發現在一個程序裏隨着標籤的增多,產生的錯誤也會越來越多,並且標籤和goto使得程序難以分析。但是,Java的標籤不會造成這種問題,因爲它們的應用場合已經受到限制,沒有特別的方式用於改變程序的控制。由此也引出了一個有趣的現象:通過限制語句的能力,反而使一項語言特性更加有用。

(goto起源於彙編語言的程序控制:“若條件A成立,則跳到這裏,否冊跳到那裏”。goto語句是在源碼級別上的跳轉,這使其招致了不好是聲譽。若一個程序總是從一個地方跳到另一個地方,還有什麼辦法能識別程序的控制流程呢?

對於這個問題,中庸之道是最好的解決辦法。真正的問題並不在於使用goto,而在於goto的濫用;而且在少數情況下,goto還是組織控制流程的最佳手段。Java中goto是一個保留字,但在語言中並未使用)

 

⑤switch和enum

a.switch

switch語句是實現多路選擇(從一系列執行路徑中挑選一個)的一種乾淨利落的方法。但它要求使用一個選擇因子,並且必須是int或char那樣的整數值。而enum可以和switch協調工作。switch一般格式如下:

switch(integral-selector){

case integral-value1 : statement; break;//break可選,若省略會繼續執行後面的case語句

case integral-value2 : statement; break;

case integral-value3 : statement; break;

case integral-value4 : statement; break;

case integral-value5 : statement; break;

//...

default: statement;//一定會執行的default語句

 

}

b.enum

枚舉類型enum關鍵字,它使得我們在需要羣組並使用枚舉類型集時,可以很方便地處理。枚舉類型屬於非常普遍的需求。

public class SimpleEnumUse{

NOT, MILD, MEDIUM, HOT, FLAMING

}

這裏創建了一個名爲SimpleEnumUse的枚舉類型,它具有5個具名值。由於枚舉類型的實例是常量,因此按照命名慣例它們都用大寫字母表示(如果在一個名字中有多個單詞,用下劃線將它們隔開)。

由於switch是要在有限的可能值集合中進行選擇,因此它與enum正是絕佳的組合。請注意enum的名字是如何能夠倍加清楚地表明程序意欲何爲的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章