方法控制流程

方法控制流程

        1. 流程語句分爲兩種,一種稱爲簡單語句,以 ; 結尾,或者是語句塊,以{}包裹,不加 ; ,可以將語句塊看作是簡單語句的集合。

        2. 控制語句結構分爲三種,分別是順序結構,選擇結構和循環結構。順序結構就是代碼從上到下依次執行,選擇結構就是根據條件的判斷選擇相應流程語句,循環結構是根據循環體重複執行流程語句。

1

        順序結構是最簡單的控制語句,執行流程語句分先後順序(這個先後順序不是系統指定的,而是開發者書寫的代碼順序),由此帶來的問題是:1. 在代碼塊中,局部變量總會在被使用前先聲明,否則異常,2. 只在順序結構中出現的return後不可以再寫代碼,否則編譯報錯。

  • 選擇結構

        選擇結構有隻有兩種,分別是if-else語句塊和switch語句塊。

        1. if-else語句塊  

        if-else語句塊是以邏輯的true和false作爲選擇的條件,其中if後將加括號寫明判斷語句,然後if的語句塊將執行true的結果,else後不跟判斷語句,直接加false的執行語句塊。一個if-else語句塊的兩塊代碼一定是不兼容的(你執行了我就不執行),並且if-else語句塊必須包含所有可能的結果的執行(要麼true,要麼false)

1
2
3
4
5
if(true){
...
}else{
...
}

        if語句是單塊語句,用來執行條件爲true時的情況,後面不加else語句,如果判斷爲false,那麼代碼將跳過這個if語句塊接着向下執行。

1
2
3
4
5
...
if(true){
...
}
...

        if-else if-else語句是多代碼塊語句,多來執行多個判斷條件的語句。

1
2
3
4
5
6
7
if(condition1){//condition1condition2condition1滿
...
}elseif(condition2){//!condition1&condition2condition1
...
}else{//!condition1&!condition2
...
}

        2. switch語句

        switch語句的基本結構是:

1
2
3
4
5
6
7
8
9
10
11
12
switch(switch-experssion){
casevalue1:
...
break;
casevalue2:
...
break;
...
default:
...
break;
}

        switch-expressin部分必須是整形和字符型(不是字符串),每個case提供了選擇語句塊的入口,而沒有提供出口,所以爲了切斷後續的執行,需要使用break退出當前的選擇(break的作用只是退出這個switch結構體,同理的,使用return也是可行的)。如果沒有break,switch就是一個徹頭徹尾的順序結構語句塊了,它會一直向下執行,直到執行到語句塊尾。

        default的存在是爲了避免傳入的switch-expression不在所有case語句中的情況,default充當了意外情況的選擇語句入口(沒有提供出口),當然,default語句是可以省略的,此時如果傳入非case情況的值,整個switch語句將會被跳過。

  • 循環結構

        循環結構由四個部分組成,分別是:初始條件,循環語句,迭代體,檢查條件。但是這個部分都不是必須的,就是說,即使缺少這四個部分的幾個或所有,依然可以構成循環體,只不過這種循環體看起來會很奇怪。

        缺少檢查條件的循環體,檢查條件默認返回的是true。        

        迭代體和檢查條件密切相關,迭代體的作用是使檢查條件爲true,從而跳出循環,缺少迭代體,很可能造成無限循環。

        沒有初始條件的循環體,比如while循環體。

        沒有循環語句的循環體,將是空循環體。

        循環結構主要有以下幾種:1. for循環,2. 增強for循環,3. while循環,4. do-while循環。

        for循環 for循環是java中唯一可以在語句條件中定義變量的語法結構,for循環的括號內包含了初始條件,檢查條件和迭代體。for的循環條件中,只有檢查條件是必須的,迭代體可以寫在循環體內,初始條件可以寫在for語句塊之前。

1
2
3
4
5
for(inti=0/**/;i<10/**/;i++/**/){
...//
}
//-->-->-->-->...
for(;;)//

        增強for循環 增強for循環的實質是iterator實現的便利機制,因此增強for循環只適用於對象數組或者以對象數組爲底層實現的集合類的遍歷。具體問題會在Java集合類框架中討論。

1
for(Typename:Array/Set){}

        while循環 while循環執行的是”當...爲true“的循環,沒有初始條件,檢查條件是while後括號裏的部分,循環語句和迭代體寫在一起。

1
2
3
4
while(check-expression){
...//
...//
}

        do-while循環 do-while循環本質上和while循環是一樣的,不同之處是,循環語句至少會執行一次,然後在依據檢查條件判斷循環語句是否需要接着執行。

1
2
3
do{
...
}while(check-expression)
  • break continue

        break的作用有兩點,在switch語句中用以跳出當前循環,在for和while語句中跳出循環。這裏的循環指的是整個循環,break被寫在那個循環語句中,就會跳出這個循環語句所在的村換體,而不是某個循環的順序語句塊。

        continue和break有些不同,continue會跳出當前的循環語句,並非當前的循環體,並且continue只能在循環體結構中使用。

        實際上,break; 和contine; 都是跳出當前的循環(循環體或循環語句)它們實質上是break thisLabel; 和continue thisLabel的縮寫,如果爲一個循環體指定名稱,並在break和continue後加上此名稱,break和continue的作用範圍就不止是當前的循環體,還可以作用於包裹當前循環體的外部循環體,比如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
outer:
for(inti=0;i<4;i++){
for(intj=0;j<4;j++){
if(j==2){
breakouter;//continueouter;
}
System.out.print(j+"");
}
System.out.print('\n');//
}
break
01
continue
01010101
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章