IT兄弟連 Java語法教程 流程式控制制語句 循環結構語句1

  • 2019 年 10 月 5 日
  • 筆記

版權聲明:本文為部落客原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。

本文鏈接:https://blog.csdn.net/ITXDL123/article/details/96096668

循環語句可以在滿足循環條件的情況下,反覆執行某一點程式碼,這段被重複執行的程式碼被稱為循環體,當反覆執行這個循環體時,需要在合適的時候把循環條件該為假,從而結束循環,否則循環將一直執行下去,形成死循環。循環語句可能包含如下4個部分:

1.初始化語句:一個或多條語句,這些語句用於完成一些初始化工作,初始化語句在循環開始之前執行。

2.循環條件:這是一個boolean表達式,這個表達式能決定是否執行循環體。

3.循環體:這個部分是循環的主體,如果循環條件允許,這個程式碼塊將被重複執行。如果這個程式碼塊只有一行語句,則這個程式碼塊的花括弧是可以省略的。

4.迭代語句:這個部分在一次循環體執行結束後,對循環條件求值之前執行,通常用於控制循環條件中的變數,使得循環在合適的時候結束。

上面4個部分只是一般性的分類,並不是每個循環中都非常清晰地分出了這個4個部分。

1 for循環

for循環是相對簡潔的循環語句,大部分情況下,for循環可以替代while循環、do-while循環。for循環的完整語法格式如下:

for(初始化語句;循環條件;迭代語句){

循環體;

}

程式執行for循環時,先執行循環的初始化語句,初始化語句只在循環開始之前執行一次。每次執行循環體之前,先計算循環條件的值,如果循環條件返回true,則執行循環體,循環體執行結束後執行循環迭代語句。因此,對於for循環而言,循環條件總比循環體要多執行一次,因為最後一次執行循環條件返回false,將不再執行循環體。

值得注意的是,for循環的循環迭代語句沒有與循環體放在一起,因此即使在執行循環體時遇到continue局域結束本次循環,循環迭代語句也一樣會得到執行。

如果循環體只有一行語句,那麼循環體的花括弧可以省略:

for(初始化語句;循環條件;迭代語句) 循環體;

例:下面的程式演示了for循環的執行流程:

public class ForDemo{

public static void main(String[] args){

for(int i = 0;i < 10; i++){

System.out.println("i的值為:" + i);

}

}

}

編譯並運行這個程式,控制台將顯示如圖10所示的資訊。

圖10 ForDemo運行結果

在上面的循環語句中,for循環的初始化語句只有一個,循環條件也只是一個簡單的boolean表達式,實際上,for循環允許同時制定多個初始化語句,循環條件也可以是一個包含邏輯運算符的表達式,如下所示:

public class ForDemo{

public static void main(String[] args){

for(int b = 0,s = 0,p = 0;b < 10 && s< 4 && p < 10;p++){

System.out.println(b++);

System.out.println(++s + p);

}

}

}

上面的程式碼中初始化變數有三個,但是只能有一個聲明語句,因此如果需要在初始化表達式中聲明多個變數,那麼這些變數應該具有相同的數據類型。

另外,for循環還有一些有趣的變體,是通過不對循環的某些部分進行定義來實現的。在Java中,for循環的所有或部分初始化,條件或迭代部分都可以為空,如下所示:

public class ForDemo{

public static void main(String[] args){

int i;

for(i = 0; i < 10;){

System.out.println("i的值為:" + i);

i++;

}

}

}

編譯並運行這個程式,控制台將顯示如如11所示的資訊。

圖11 修改後的ForDemo運行結果

這裡,for循環沒有迭代表達式,而把循環控制變數i的增加放在了循環體的內部。這就意味著每次循環時都要測試i是否等於10,除此之外沒有進一步的動作。當然,因為i的增加在循環體內部,所以循環還可以正常進行。

下面在看for循環的另一個變體,在下面的例子中,for循環的初始化部分也被移出了for循環:

public class ForDemo{

public static void main(String[] args){

int i = 0;

for( ; i < 10; ){

System.out.println("i的值為:" + i);

i++;

}

}

}

重新編譯並運行這個程式,控制台將顯示如圖12所示的資訊。

在此版本中,在循環開始前就把i初始化了,沒有把它作為for循環的一部分。一般情況下都是把循環控制變數的初始化放在for循環內部,但是當初始值是通過某個複雜過程得到的,而又不方便把這一過程放在for語句中時,可以把初始化放在循環之外。

圖12 再次修改後的ForDemo運行結果

for循環還有另外一種變體就是將循環的條件表達式設為空,可以生成無限循環,即永遠不會停止的循環。例如下面的程式碼就是Java程式創建無限循環的常用方法:

for( ; ; ){

//...

}

該循環將永遠運行下去,儘管有許多程式設計任務,如作業系統命令處理器,需要無限循環,但是多數「無限循環」都是具有特殊終止條件的循環。

在Java中,for循環(或其他循環)可以沒有循環體,因為空語句在語法上是有效的。沒有循環體的循環十分有用。例如,下面的程式就是用了沒有循環體的循環,計算從1至5的數之和:

public class ForDemo2{

public static void main(String[] args){

int sum = 0;

for(int i = 1; i <= 5; sum += i++);

System.out.println("1至5的和為:" + n);

}

}

編譯並運行這個程式,控制台將顯示如圖13所示的資訊。

注意,整個求和過程是在for語句中完成的,不需要循環體。這裡要特別注意迭代表達式:

sum += i++;

圖13 ForDemo2運行結果

Tags: