java流程控制

1.  順序結構

1.1 if語句

格式:

if (條件語句){

         執行語句;

         ……

}

1.2 if…else語句

格式:

if (判斷條件){

         執行語句1

         ……

}else{

         執行語句2

         ……

}

使用if…else語句時,一定要處理包含範圍更小的情況

1.3 if…else if…else語句

格式:

if (判斷條件1) {

         執行語句1

} else if (判斷條件2) {

         執行語句2

}

...

else if (判斷條件n) {

         執行語句n

} else {

         執行語句n+1

}

1.4 if語句和三目運算符之間的轉換

三元運算符語法格式:

判斷條件 ? 表達式1 : 表達式2

三元運算符會得到一個結果,通常用於對某個變量進行賦值,當判斷條件成立時,運算結果爲表達式1的值,否則結果爲表達式2的值。

例如求兩個數x、y中的較大者,如果用if…else語句來實現,具體代碼如下:

int x = 0;

int y = 1;

int max;

if (x > y) {

         max= x;

} else {

         max= y;

}

上面的代碼運行之後,變量max的值爲1。其中3-8行的代碼可以使用下面的三元運算來替換。

int max = x > y ? x : y;

1.5 switch分支語句

Switch語句由一個控制表達式和多個case標籤組成,與if語句不同的是,switch語句後面的控制表達式的數據類型只能是byte,short,char,int四種整數類型枚舉類型和java.lang.String類型(從java7才允許),不能是boolean類型如果省略了case後面的break將會引發switch穿透。

格式:

switch (表達式){

         case 目標值1:

                  執行語句1

                  break;

         case 目標值2:

                  執行語句2

                  break;

         ......

         case 目標值n:

                  執行語句n

                  break;

         default:

                  執行語句n+1

                  break;

}

         Switch語句運行機制:switch語句會先求出表達式的值,然後拿這個表達式與case標籤後的值進行比較,一旦遇到相等的值,程序就開始執行case標籤後的代碼,不再判斷與後面case,default標籤是否匹配。除非遇到 break 纔會結束。

         Java7增強了switch語句的功能,允許switch語句的控制表達式是java.lang.String類型的變量或表達式(只能String類型,不能是StringBufferStringBuilder這兩中字符串類型)。

2.  循環結構

2.1 while循環

         while循環語句和選擇結構if語句有些相似,都是根據條件判斷來決定是否執行大括號內的執行語句。區別在於,while語句會反覆地進行條件判斷,只要條件成立,{}內的執行語句就會執行,直到條件不成立,while循環結束。while循環語句的語法結構如下:

while(循環條件){

執行語句

………

}

         在上面的語法結構中,{}中的執行語句被稱作循環體,循環體是否執行取決於循環條件。當循環條件爲true時,循環體就會執行。循環體執行完畢時會繼續判斷循環條件,如條件仍爲true則會繼續執行,直到循環條件爲false時,整個循環過程纔會結束。

2.2 do…while循環

do…while循環語句和while循環語句功能類似,其語法結構如下:

do {

執行語句

………

} while(循環條件);

在上面的語法結構中,關鍵字do後面{}中的執行語句是循環體。do…while循環語句將循環條件放在了循環體的後面。這也就意味着,循環體會無條件執行一次,然後再根據循環條件來決定是否繼續執行。

與while循環不同的是:do while循環後面必須有一個分號,這個分號表明循環結束。

2.3 for循環

for循環語句是最常用的循環語句,一般用在循環次數已知的情況下。for循環語句的語法格式如下:

for(初始化表達式; 循環條件; 操作表達式){

         執行語句

         ………

}

在上面的語法結構中,for關鍵字後面()中包括了三部分內容:初始化表達式、循環條件和操作表達式,它們之間用“;”分隔,{}中的執行語句爲循環體。

接下來分別用①表示初始化表達式、②表示循環條件、③表示操作表達式、④表示循環體,通過序號來具體分析for循環的執行流程。具體如下:

for(① ; ② ; ③){

         ④

}

第一步,執行①

第二步,執行②,如果判斷結果爲true,執行第三步,如果判斷結果爲false,執行第五步

第三步,執行④

第四步,執行③,然後重複執行第二步

第五步,退出循環

注意:

         a. for循環允許同時指定多個初始化語句,循環條件也可以是一個包含邏輯運算符的表達式;

         b. for循環圓括號中只有兩個分號是必須的,初始化語句,循環條件,迭代語句部分都可以省略的,如果省略了循環條件,則這個循環條件默認爲true,將會產生一個死循環;

         c. for循環初始化語句可以放在循環之前定義。可以擴大初始化語句中所定義變量的作用範圍。

2.4無限循環(死循環)

最簡單無限循環格式:

while(true){}

for(;;){}

無限循環存在的原因是並不知道循環多少次,而是根據某些條件,來控制循環。

2.5 嵌套循環

嵌套循環是指在一個循環語句的循環體中再定義一個循環語句的語法結構。while、do…while、for循環語句都可以進行嵌套,並且它們之間也可以互相嵌套,如最常見的在for循環中嵌套for循環,格式如下:

 

for(初始化表達式; 循環條件; 操作表達式) {

    ………

    for(初始化表達式; 循環條件; 操作表達式) {

             執行語句

             ………

    }

    ………

}

 

接下來通過一個練習,來實現使用“*”打印直角三角形,

如下所示:

public class ForForDemo {
    public static voidmain(String[] args) {
             int i, j; // 定義兩個循環變量
             for (i = 1; i<= 9; i++) { // 外層循環
                      for (j =1; j <= i; j++) { // 內層循環
                               System.out.print("*");// 打印*
                      }
                      System.out.print("\n");// 換行
             }
    }
}

運行結果如下:

*

**

***

****

*****

******

*******

********

*********

在上述代碼中定義了兩層for循環,分別爲外層循環和內層循環,外層循環用於控制打印的行數,內層循環用於打印“*”,每一行的“*”個數逐行增加,最後輸出一個直角三角形。由於嵌套循環程序比較複雜,下面分步驟進行詳細地講解,具體如下:

第一步,在第3行代碼定義了兩個循環變量i和j,其中i爲外層循環變量,j爲內層循環變量。

第二步,在第4行代碼將i初始化爲1,條件i <= 9爲true,首次進入外層循環的循環體。

第三步,在第5行代碼將j初始化爲1,由於此時i的值爲1,條件j <= i爲true,首次進入內層循環的循環體,打印一個“*”。

第四步,執行第5行代碼中內層循環的操作表達式j++,將j的值自增爲2。

第五步,執行第5行代碼中的判斷條件j<=i,判斷結果爲false,內層循環結束。執行後面的代碼,打印換行符。

第六步,執行第4行代碼中外層循環的操作表達式i++,將i的值自增爲2。

第七步,執行第4行代碼中的判斷條件i<=9,判斷結果爲true,進入外層循環的循環體,繼續執行內層循環。

第八步,由於i的值爲2,內層循環會執行兩次,即在第2行打印兩個“*”。在內層循環結束時會打印換行符。

第九步,以此類推,在第3行會打印3個“*”,逐行遞增,直到i的值爲10時,外層循環的判斷條件i<= 9結果爲false,外層循環結束,整個程序也就結束了。

 

總結:

for循環和while循環的區別:

         控制條件語句所控制的那個變量,在for循環結束後,就不能再被訪問到了,而while循環結束還可以繼續使用,如果想繼續使用,就用while,否則使用for。原因是for循環結束,該變量就從內存中消失,能夠提高內存的使用效率。

使用場景:

         for循環適合針對一個範圍判斷進行操作         ,while循環適合判斷次數不明確操作。

三種循環的區別:

         A:do…while循環至少會執行一次循環體。

         B:for循環和while循環只有在條件成立的時候纔會去執行循環體,他們是可以相互轉換的。

3.  控制循環結構

3.1使用break結束循環(使用場景:A:在選擇結構switch語句中;B:在循環語句中)

在switch條件語句和循環語句中都可以使用break語句。當它出現在switch條件語句中時,作用是終止某個case並跳出switch結構。當它出現在循環語句中,作用是跳出循環語句,執行後面的代碼。

當break語句出現在嵌套循環中的內層循環時,它只能跳出內層循環,如果想使用break語句跳出外層循環則需要對外層循環添加標記。

3.2使用continue忽略本次循環剩下的語句(使用場景:在循環語句中)

continue語句用在循環語句中,它的作用是終止本次循環,執行下一次循環。

在嵌套循環語句中,continue語句後面也可以通過使用標記的方式結束本次外層循環,用法與break語句相似

3.3使用return結束方法

return關鍵字並不是專門結束循環的,return的功能是結束一個方法。當一個方法執行到return語句時,這個方法將被結束。

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