第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

全部開(kāi)發(fā)者教程

Java 循環(huán)語(yǔ)句

循環(huán)結(jié)構(gòu)能夠讓程序員以最少的精力去完成大量重復(fù)的工作,它可以讓計(jì)算機(jī)根據(jù)條件做循環(huán)計(jì)算,當(dāng)條件成立時(shí)繼續(xù)循環(huán),當(dāng)條件不成立時(shí)結(jié)束循環(huán)。

依據(jù)前面所學(xué)的知識(shí),如果我們想在屏幕上依次打印1到5,可以編寫(xiě)以下程序:

實(shí)例演示
預(yù)覽 復(fù)制
復(fù)制成功!
// PrintNums.java
class PrintNums {
    public static void main(String[] args) {
      	// 依次打印1到5
        System.out.println("1");
        System.out.println("2");
        System.out.println("3");
        System.out.println("4");
        System.out.println("5");
    } 
}
運(yùn)行案例 點(diǎn)擊 "運(yùn)行案例" 可查看在線(xiàn)運(yùn)行效果

運(yùn)行結(jié)果:

1
2
3
4
5

但是這種編寫(xiě)代碼的方案存在一些弊端:

  • 不靈活:如果我們想要更改需求,打印從6到10,那么就不得不逐行更改;
  • 難于維護(hù):如果有大量代碼,更容易產(chǎn)生bug
  • 伸縮性差:依次打印從1到5貌似很簡(jiǎn)單,如果需求變?yōu)榇蛴?到100呢?這意味著需要編寫(xiě)大量的代碼。

使用循環(huán)結(jié)構(gòu),就可以解決上述弊端。下面我們打開(kāi)代碼編輯器,新建一個(gè)LoopPrintNums.java,復(fù)制如下代碼:

實(shí)例演示
預(yù)覽 復(fù)制
復(fù)制成功!
// LoopPrintNums.java
class LoopPrintNums {
    public static void main(String[] args) {
        for(int i = 1; i <= 10; i ++) {
            System.out.print(i + "\t");
        }
    }
}
運(yùn)行案例 點(diǎn)擊 "運(yùn)行案例" 可查看在線(xiàn)運(yùn)行效果

運(yùn)行結(jié)果:

1	2	3	4	5	6	7	8	9	10	

聰明的你可能發(fā)現(xiàn),如果將i <= 10改為 i <= 100,屏幕將依次從1打印100。
上述代碼中,我們看到不需要再去編寫(xiě)多條打印語(yǔ)句,同樣得到了我們想要的結(jié)果,代碼量大大減少。那么上述代碼具體有什么含義呢,為什么這樣寫(xiě)就實(shí)現(xiàn)了多個(gè)數(shù)字的打印呢?在本小節(jié)中,我們就會(huì)進(jìn)行詳細(xì)介紹。

1. while 循環(huán)

1.1 語(yǔ)法

while循環(huán)是最簡(jiǎn)單的循環(huán)形式。我們先來(lái)看看它的基本用法:

while (條件) {
    // 循環(huán)體,條件成立時(shí)執(zhí)行
    ...
}
// 循環(huán)完成后執(zhí)行

while循環(huán)在每次循環(huán)開(kāi)始前,首先會(huì)判斷條件是否成立,如果計(jì)算結(jié)果為true, 就會(huì)執(zhí)行循環(huán)體內(nèi)部語(yǔ)句。如果計(jì)算結(jié)果為false,會(huì)跳出循環(huán),執(zhí)行后續(xù)代碼。

1.2 實(shí)例

對(duì)于打印從1到5的例子,可以使用while循環(huán)可以這樣寫(xiě):

實(shí)例演示
預(yù)覽 復(fù)制
復(fù)制成功!
public class WhileLoop1 {
    public static void main(String args[]) {
        int i = 1;
        while (i <= 5) {
            System.out.println(i); // 打印i
            i ++; // i自增1
        }
    }
}
運(yùn)行案例 點(diǎn)擊 "運(yùn)行案例" 可查看在線(xiàn)運(yùn)行效果

你也許注意到在循環(huán)體內(nèi)部,除了打印變量i的值,還有一個(gè)語(yǔ)句:i ++,這個(gè)語(yǔ)句的作用是讓變量i自增1。如果沒(méi)有這個(gè)語(yǔ)句,i的值永遠(yuǎn)不會(huì)改變,所以循環(huán)條件永遠(yuǎn)成立,程序?qū)⑾萑胨姥h(huán),直到將資源耗盡才會(huì)停止,所以要杜絕編寫(xiě)死循環(huán)代碼。

Tips:如果循環(huán)的條件永遠(yuǎn)不會(huì)變成 false(比如使用字面量true作為條件),則稱(chēng)這種循環(huán)為無(wú)限循環(huán)或死循環(huán)。循環(huán)體內(nèi)的代碼會(huì)無(wú)限地重復(fù)執(zhí)行,直到中斷。

再看一個(gè)例子,得到1到100的累加和:

實(shí)例演示
預(yù)覽 復(fù)制
復(fù)制成功!
public class WhileLoop2 {
    public static void main(String[] args) {
        int sum = 0; // 累加和
        int i = 1;
        while (i <= 100) {
            sum = sum + i; // 使sum和i相加,并將值再次賦值給sum
            i ++; // i自增1
        }
        System.out.println("1到100的累加和為:" + sum);
    }
}
運(yùn)行案例 點(diǎn)擊 "運(yùn)行案例" 可查看在線(xiàn)運(yùn)行效果

運(yùn)行結(jié)果:

1到100的累加和為:5050

我們來(lái)對(duì)程序進(jìn)行解析:

  1. 定義兩個(gè)變量sumi分別用于存放累加和以及要累加的數(shù)字。
  2. 循環(huán)開(kāi)始前判斷條件 i <= 100是否成立,此時(shí) i = 1,成立,執(zhí)行循環(huán)體內(nèi)代碼。
  3. 循環(huán)體內(nèi)代碼第一次執(zhí)行,sum = 1,i 自增1變?yōu)?。
  4. 再次判斷循環(huán)條件,成立就繼續(xù)執(zhí)行循環(huán)體,直到 i = 100,自增1 變?yōu)?01,此時(shí)條件不成立。執(zhí)行循環(huán)后面的代碼。
  5. 執(zhí)行打印語(yǔ)句,打印最終的 sum值,程序結(jié)束。

2. do while 循環(huán)

2.1 語(yǔ)法

do while循環(huán)的功能與while循環(huán)類(lèi)似,不同點(diǎn)在于:while循環(huán)是先判斷條件,再執(zhí)行循環(huán)體;而do while 循環(huán)則是先執(zhí)行循環(huán)體,再判斷條件,如果條件成立繼續(xù)執(zhí)行循環(huán),條件不成立則終止循環(huán)。do while循環(huán)的語(yǔ)法如下:

do {
    // 循環(huán)體
} while (條件);

無(wú)論條件成立與否,do while循環(huán)都至少執(zhí)行一次。而while循環(huán)可能一次都不會(huì)執(zhí)行。

2.2 實(shí)例

我們現(xiàn)在使用 do while循環(huán)實(shí)現(xiàn)1到100的累加求和,代碼如下:

實(shí)例演示
預(yù)覽 復(fù)制
復(fù)制成功!
public class DoWhileLoop {
    public static void main(String[] args) {
        int sum = 0; // 累加和
        int i = 1;
        do {
            sum = sum + i; // 使sum和i相加,并將值再次賦值給sum
            i ++; // i自增1
        } while (i <= 100);
        System.out.println("1到100的累加和為:" + sum);
    }
}
運(yùn)行案例 點(diǎn)擊 "運(yùn)行案例" 可查看在線(xiàn)運(yùn)行效果

運(yùn)行結(jié)果:

1到100的累加和為:5050

3. for 循環(huán)

3.1 語(yǔ)法

下面是for循環(huán)的語(yǔ)法結(jié)構(gòu):

for (變量聲明; 條件; 迭代語(yǔ)句) {
    // 循環(huán)體
}

for循環(huán)是一種特殊的while循環(huán),也是被使用最廣泛的循環(huán)。它使用計(jì)數(shù)器來(lái)實(shí)現(xiàn)循環(huán)。在關(guān)鍵字 for后面的括號(hào)中,會(huì)有三個(gè)語(yǔ)句,第一個(gè)語(yǔ)句是變量聲明語(yǔ)句,允許聲明一個(gè)或多個(gè)整型變量;第二個(gè)語(yǔ)句是條件,條件的檢測(cè)方式與while循環(huán)相同(每次循環(huán)開(kāi)始前判斷條件成立與否);第三個(gè)語(yǔ)句是迭代語(yǔ)句,雖然可以是任何語(yǔ)句,但該語(yǔ)句通常用于遞增或遞減變量。

3.2 實(shí)例

我們使用for循環(huán)連續(xù)打印5行”慕課網(wǎng)真棒“的字樣,代碼如下:

實(shí)例演示
預(yù)覽 復(fù)制
復(fù)制成功!
public class ForLoop1 {
    public static void main(String[] args) {
        for (int i = 1; i <= 5; i ++) {
            System.out.println("慕課網(wǎng)真棒");
        }
    }
}
運(yùn)行案例 點(diǎn)擊 "運(yùn)行案例" 可查看在線(xiàn)運(yùn)行效果

運(yùn)行結(jié)果:

慕課網(wǎng)真棒
慕課網(wǎng)真棒
慕課網(wǎng)真棒
慕課網(wǎng)真棒
慕課網(wǎng)真棒

我們現(xiàn)在使用for來(lái)實(shí)現(xiàn)1到100的累加求和,代碼如下:

實(shí)例演示
預(yù)覽 復(fù)制
復(fù)制成功!
public class ForLoop2 {
    public static void main(String[] args) {
        int sum = 0; // 累加和
        for (int i = 1; i <= 100; i ++) {
            sum += i; // 加和賦值運(yùn)算
        }
        System.out.println("1到100的累加和為:" + sum);
    }
}
運(yùn)行案例 點(diǎn)擊 "運(yùn)行案例" 可查看在線(xiàn)運(yùn)行效果

運(yùn)行結(jié)果:

1到100的累加和為:5050

程序解析:

在執(zhí)行循環(huán)體前,會(huì)先執(zhí)行括號(hào)中的變量聲明語(yǔ)句int i = 1,它定義了一個(gè)計(jì)數(shù)器變量i并且賦值為1(注意這個(gè)語(yǔ)句只執(zhí)行一次)。然后會(huì)執(zhí)行條件判斷語(yǔ)句i <= 100,顯然條件成立,執(zhí)行循環(huán)體,循環(huán)體執(zhí)行完成后會(huì)才會(huì)執(zhí)行括號(hào)中的第三個(gè)語(yǔ)句i ++,再次判斷條件是否成立,直到當(dāng)i的值為100時(shí),最后一次執(zhí)行循環(huán)體,這個(gè)時(shí)候i再次自增1101,條件不成立,結(jié)束循環(huán)。

實(shí)際使用中,通常使用for循環(huán)來(lái)遍歷一個(gè)數(shù)組,我們將在 Java 數(shù)組小節(jié)舉例介紹。

for循環(huán)中第一個(gè)語(yǔ)句,變量聲明語(yǔ)句可以一次聲明多個(gè)整型變量,實(shí)例代碼如下:

實(shí)例演示
預(yù)覽 復(fù)制
復(fù)制成功!
public class ForLoop2 {
    public static void main(String[] args) {
        for (int i = 1, j = 10; i <= 10; i++, j--) {
            System.out.print(i + "\t");
            System.out.print(j + "\t");
        }
    }
}
運(yùn)行案例 點(diǎn)擊 "運(yùn)行案例" 可查看在線(xiàn)運(yùn)行效果

運(yùn)行結(jié)果:

1	10	2	9	3	8	4	7	5	6	6	5	7	4	8	3	9	2	10	1

另外,for循環(huán)還可以缺省變量聲明語(yǔ)句、循環(huán)條件和迭代語(yǔ)句,實(shí)例:

// 缺省變量聲明語(yǔ)句
for (int i = 0; ; i ++) {
    // 語(yǔ)句
}
// 缺省循環(huán)條件語(yǔ)句和迭代語(yǔ)句
for (int i = 0; ; ) {
    // 語(yǔ)句
}
// 缺省所有語(yǔ)句
for (;;) {
    // 語(yǔ)句
}

但請(qǐng)注意,通常情況下不建議這樣寫(xiě)。

4. for each 循環(huán)

由于學(xué)習(xí) for each 循環(huán)需要一些數(shù)組和集合的前置知識(shí),我們將會(huì)在 Java 數(shù)組小節(jié)舉例講解。

5. break 和 continue 關(guān)鍵字

我們可以使用breakcontinue語(yǔ)句來(lái)重定向程序執(zhí)行流。

5.1 break

break關(guān)鍵字可以出現(xiàn)在一個(gè)循環(huán)中,用以跳出當(dāng)前循環(huán)。我們來(lái)看一個(gè)實(shí)例:

實(shí)例演示
預(yù)覽 復(fù)制
復(fù)制成功!
public class BreakKeywords1 {
    public static void main(String[] args) {
        for (int i = 1; i <= 10; i ++) {
            if(i == 3) { // 條件語(yǔ)句
                System.out.println("當(dāng)i等于3時(shí),終止循環(huán)!");
                break;
            }
            System.out.println(i);
        }
    }
}
運(yùn)行案例 點(diǎn)擊 "運(yùn)行案例" 可查看在線(xiàn)運(yùn)行效果

運(yùn)行結(jié)果:

1
2
當(dāng)i等于3時(shí),終止循環(huán)!

上面是一段循環(huán)打印數(shù)字的代碼,當(dāng)循環(huán)到達(dá)第3次迭代時(shí),執(zhí)行條件分支中的語(yǔ)句,將終止循環(huán)。注意:break語(yǔ)句通常配合if語(yǔ)句使用。

對(duì)于多層循環(huán)的情況,break語(yǔ)句只能終止它自己所在的那一層循環(huán),并不會(huì)影響到外層循環(huán)。請(qǐng)閱讀如下代碼:

實(shí)例演示
預(yù)覽 復(fù)制
復(fù)制成功!
public class BreakKeywords2 {
    public static void main(String[] args) {
        for (int i = 1; i <= 5; i ++) {
            // 打印i的值
            System.out.println(i);
            for (int j = 1; j<=5; j ++) {
                if(j == 3) { // 條件語(yǔ)句
                    System.out.println("當(dāng)j等于3時(shí),終止循環(huán)!");
                    break;
                }
                // 打印j的值
                System.out.println(j);
            }
        }
    }
}
運(yùn)行案例 點(diǎn)擊 "運(yùn)行案例" 可查看在線(xiàn)運(yùn)行效果

運(yùn)行結(jié)果:

1
1
2
當(dāng)j等于3時(shí),終止循環(huán)!
2
1
2
當(dāng)j等于3時(shí),終止循環(huán)!
3
1
2
當(dāng)j等于3時(shí),終止循環(huán)!
4
1
2
當(dāng)j等于3時(shí),終止循環(huán)!
5
1
2
當(dāng)j等于3時(shí),終止循環(huán)!

上面的代碼有兩個(gè)for循環(huán)嵌套,break語(yǔ)句位于內(nèi)層循環(huán),所以當(dāng)表達(dá)式j == 3成立時(shí),會(huì)跳出內(nèi)層循環(huán),進(jìn)而繼續(xù)執(zhí)行外層循環(huán)。

5.2 continue

continue關(guān)鍵字可以跳過(guò)當(dāng)次循環(huán),繼續(xù)執(zhí)行下一次循環(huán),我們來(lái)看一個(gè)實(shí)例:

實(shí)例演示
預(yù)覽 復(fù)制
復(fù)制成功!
public class ContinueKeywords {
    public static void main(String[] args) {
        for (int i = 1; i <= 5; i ++) {
            if(i == 3) {
                System.out.println("當(dāng)i等于3時(shí),跳過(guò)~");
                continue;
            }
            System.out.println(i);
        }
    }
}
運(yùn)行案例 點(diǎn)擊 "運(yùn)行案例" 可查看在線(xiàn)運(yùn)行效果

運(yùn)行結(jié)果:

1
2
當(dāng)i等于3時(shí),跳過(guò)~
4
5

在多層嵌套的循環(huán)中,continue語(yǔ)句只能跳過(guò)它自己所在位置的循環(huán)。

6. 小結(jié)

本節(jié)中,我們依次介紹了Java中的四種循環(huán)結(jié)構(gòu):while循環(huán)、do while循環(huán)、for循環(huán)以及for each循環(huán)。并且介紹了breakcontinue關(guān)鍵字在循環(huán)中的使用。

其中,while循環(huán)的循環(huán)體可能一次都不執(zhí)行,而do while循環(huán)的循環(huán)體至少執(zhí)行一次。

for 循環(huán)通過(guò)計(jì)數(shù)器實(shí)現(xiàn)復(fù)雜循環(huán)。for each循環(huán)可以直接遍歷數(shù)組的每個(gè)元素。

在使用循環(huán)結(jié)構(gòu)編寫(xiě)業(yè)務(wù)代碼時(shí),為了避免死循環(huán),一定要確保循環(huán)條件能夠被影響。