1. 概念
大家想一下,我們在400米的跑道上參加萬米長跑,正常情況下要跑25圈,這25圈每一圈的跑步過程其實(shí)都是一樣的,相當(dāng)于是我們重復(fù)地轉(zhuǎn)了25圈。跑完第25圈時(shí),我們就會(huì)結(jié)束長跑,當(dāng)然你也可以提前結(jié)束長跑。但如果你是一個(gè)超人,跑完25圈之后還繼續(xù)跑下去,直到天荒地老,這就成了一個(gè)”死循環(huán)“了。
所以循環(huán)其實(shí)就是重復(fù)地完成某一件事情或者某一個(gè)操作,且該操作有開始和結(jié)束。我們在執(zhí)行循環(huán)時(shí),需要滿足一定的循環(huán)條,反復(fù)執(zhí)行特定的代碼,當(dāng)條件被打破時(shí)就要結(jié)束循環(huán)。這個(gè)循環(huán)操作不一定是完全一樣的操作,而是類似的操作,比如我們可以循環(huán)的播放音樂、循環(huán)計(jì)算1000個(gè)學(xué)生的成績等。
1. 實(shí)現(xiàn)方式
明確了循環(huán)的概念之后,我們還要知道有哪幾種具體的循環(huán)實(shí)現(xiàn)方式。在Java中,實(shí)現(xiàn)循環(huán)的方式有:
for循環(huán);
while循環(huán);
do-while循環(huán);
foreach循環(huán)
1. for循環(huán)
首先我們來學(xué)習(xí)一下Java里的for循環(huán),這也是我們開發(fā)時(shí)最常用的一種循環(huán)形式。
3.1 語法
for循環(huán)的基本語法如下:
for(①.聲明并初始化循環(huán)變量;②.判斷循環(huán)條件;④.改變循環(huán)變量值){
//③.循環(huán)體
}
語法說明:
1.for循環(huán)最先執(zhí)行初始化步驟。在這里可以聲明一種類型,但可以初始化一個(gè)或多個(gè)循環(huán)控制變量,也可以是空語句;
2.判斷循環(huán)條件,檢測布爾表達(dá)式的值。如果為 true,循環(huán)體被執(zhí)行。如果為false,循環(huán)終止,開始執(zhí)行循環(huán)體后面的語句。且for循環(huán)的執(zhí)行次數(shù)在執(zhí)行前就已經(jīng)是確定的。
3.執(zhí)行一次循環(huán)后,就會(huì)更新一次循環(huán)控制變量的值;
4.再次檢測布爾表達(dá)式,循環(huán)執(zhí)行上面的過程。
根據(jù)上面的步驟,壹哥把重點(diǎn)步驟給大家總結(jié)如下:
?、?->②-->③-->④-->②-->③-->④-->②-->③-->④-.....-②
如下圖所示:
3.2實(shí)現(xiàn)方式
Java 中的 for 循環(huán)是一種常見的控制流結(jié)構(gòu),可用于多次重復(fù)執(zhí)行某段代碼。for 循環(huán)包括三個(gè)部分:初始化語句、循環(huán)條件和循環(huán)迭代器,如下所示:
for (初始化語句; 循環(huán)條件; 循環(huán)迭代器) {
// 循環(huán)體
}
在每次循環(huán)中,初始化語句只會(huì)在第一次執(zhí)行,循環(huán)條件將會(huì)被檢查,如果為 true,則執(zhí)行循環(huán)體,否則跳出循環(huán),執(zhí)行后面的代碼。循環(huán)迭代器則在每次循環(huán)結(jié)束后執(zhí)行,以便更新循環(huán)變量的值。
以下是一個(gè)簡單的 Java 程序,使用 for 循環(huán)輸出數(shù)字 0 到 9:
public class ForLoopExample {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
System.out.println(i);
}
}
}
在這個(gè)例子中,初始化語句是 int i = 0;,將變量 i 初始化為 0。循環(huán)條件是 i < 10,只要 i 小于 10,循環(huán)就會(huì)一直執(zhí)行。循環(huán)迭代器是 i++,每次循環(huán)結(jié)束后,i 的值會(huì)增加 1。
當(dāng)程序運(yùn)行時(shí),for 循環(huán)將會(huì)輸出數(shù)字 0 到 9:
0
1
2
3
4
5
6
7
8
9
這就是一個(gè)簡單的 for 循環(huán)的例子。在實(shí)際編程中,for 循環(huán)經(jīng)常用于遍歷數(shù)組或集合等數(shù)據(jù)結(jié)構(gòu)。
4. while循環(huán)
Java中的while循環(huán)是一種重復(fù)執(zhí)行代碼塊的控制結(jié)構(gòu),只要指定的條件為真,就會(huì)一直執(zhí)行循環(huán)中的代碼塊。while循環(huán)的語法如下:
while (condition) {
// 循環(huán)體
}
在上面的代碼中,condition 是一個(gè)布爾表達(dá)式,如果條件為true,則會(huì)一直執(zhí)行循環(huán)體中的代碼。循環(huán)體可以包含任何Java代碼,包括變量聲明、控制流語句、函數(shù)調(diào)用等等。
需要注意的是,如果while循環(huán)中的條件始終為true,那么該循環(huán)將永遠(yuǎn)不會(huì)結(jié)束,這種情況下可能會(huì)導(dǎo)致無限循環(huán),程序會(huì)一直運(yùn)行下去,直到內(nèi)存或處理器資源耗盡或者程序強(qiáng)制停止。因此,在編寫while循環(huán)時(shí),一定要確保循環(huán)體中的代碼最終能夠改變條件的值,使得循環(huán)最終能夠結(jié)束。
5.for循環(huán)和while循環(huán)的特點(diǎn)
5.1 for循環(huán):
●for循環(huán)適用于已知循環(huán)次數(shù)的情況,可以根據(jù)給定的條件來自動(dòng)控制循環(huán)次數(shù)。
●for循環(huán)可以遍歷一個(gè)序列,例如列表、元組、字符串等,對序列中的每個(gè)元素執(zhí)行相同的操作。
●for循環(huán)可以使用range()函數(shù)生成一系列連續(xù)的整數(shù)作為循環(huán)變量,也可以使用enumerate()函數(shù)同時(shí)獲取序列中元素的索引和值。
●for循環(huán)語法簡潔,易于理解和維護(hù)。
5.2 while循環(huán):
●while循環(huán)適用于未知循環(huán)次數(shù)的情況,可以根據(jù)條件判斷來控制循環(huán)次數(shù)。
●while循環(huán)適用于需要反復(fù)執(zhí)行某個(gè)操作直到滿足條件的情況,例如輸入驗(yàn)證、游戲循環(huán)等。
●while循環(huán)語句塊執(zhí)行前需要先判斷條件是否成立,如果條件不成立,則不會(huì)進(jìn)入循環(huán)。
●while循環(huán)可以用于實(shí)現(xiàn)多線程的同步等復(fù)雜操作。
總的來說,for循環(huán)適用于已知循環(huán)次數(shù)的情況,可以方便地遍歷序列;而while循環(huán)適用于未知循環(huán)次數(shù)的情況,可以在需要時(shí)反復(fù)執(zhí)行操作直到滿足條件。在編程中,根據(jù)具體的需求選擇不同的循環(huán)結(jié)構(gòu)可以提高代碼的效率和可讀性。
6.for循環(huán)和while循環(huán)的區(qū)別
6.1 for循環(huán)
for循環(huán)的語法如下:
for (初始化語句; 循環(huán)條件; 循環(huán)迭代器) {
// 循環(huán)體
}
其實(shí):
●初始化語句:一般用于初始化循環(huán)變量。
●循環(huán)條件:如果滿足條件,就繼續(xù)執(zhí)行循環(huán)體中的語句;否則,跳出循環(huán)。
●循環(huán)迭代器:更新循環(huán)變量的值,一般用于每次循環(huán)結(jié)束時(shí)更新循環(huán)變量的值。
例如,以下代碼使用for循環(huán)打印出從0到9的數(shù)字:
for (int i = 0; i < 10; i++) {
System.out.println(i);
}
這個(gè)循環(huán)會(huì)從0開始,每次遞增1,直到循環(huán)變量i的值達(dá)到10為止。這個(gè)循環(huán)的輸出結(jié)果如下:
0
1
2
3
4
5
6
7
8
9
6.2 while循環(huán)
while循環(huán)的語法如下:
while (循環(huán)條件) {
// 循環(huán)體
}
其中:
循環(huán)條件:如果滿足條件,就繼續(xù)執(zhí)行循環(huán)體中的語句;否則,跳出循環(huán)。
例如,以下代碼使用while循環(huán)打印出從0到9的數(shù)字:
//定義初始化遍歷
int i = 0;
while (i < 10) {
System.out.println(i);
i++;
}
這個(gè)循環(huán)會(huì)從0開始,每次遞增1,直到循環(huán)變量i的值達(dá)到10為止。這個(gè)循環(huán)的輸出結(jié)果與上面的for循環(huán)相同:
0
1
2
3
4
5
6
7
8
9
6.3 for循環(huán)和while循環(huán)的比較
在使用上,for循環(huán)和while循環(huán)都可以完成相同的任務(wù),但它們的使用場景略有不同:
●for循環(huán)適用于已知循環(huán)次數(shù)的情況,例如遍歷一個(gè)數(shù)組或集合。
●while循環(huán)適用于未知循環(huán)次數(shù)的情況,例如讀取文件直到文件結(jié)尾。
因此,當(dāng)你需要重復(fù)執(zhí)行一組語句時(shí),應(yīng)該根據(jù)具體的情況選擇for循環(huán)或while循環(huán)。
7.for循環(huán)和while循環(huán)的使用場景
7.1 for循環(huán)的使用場景
for循環(huán)通常用于迭代數(shù)組或集合中的元素。例如,以下示例計(jì)算一個(gè)數(shù)組中所有元素的和:
int[] arr = {1, 2, 3, 4, 5};
int sum = 0;
for (int i = 0; i < arr.length; i++) {
sum += arr[i];
}
System.out.println(sum);
上面的代碼中,for循環(huán)遍歷整個(gè)數(shù)組,將每個(gè)元素加入到sum變量中,最終輸出總和。這種情況下,我們已經(jīng)知道了要循環(huán)的次數(shù)(數(shù)組的長度),所以使用for循環(huán)更加方便。
7.2 while循環(huán)的使用場景
while循環(huán)通常用于在不確定條件下重復(fù)執(zhí)行代碼塊。例如,以下示例不斷生成隨機(jī)數(shù),直到生成了一個(gè)大于90的數(shù):
int num = 0;
while (num <= 90) {
num = (int) (Math.random() * 100);
}
System.out.println("The first number greater than 90 is: " + num);
上面的代碼中,while循環(huán)不斷生成隨機(jī)數(shù),直到生成的數(shù)大于90為止。這種情況下,我們不知道要循環(huán)多少次,所以使用while循環(huán)更加方便。
需要注意的是,在某些情況下,for循環(huán)和while循環(huán)是可以互換的,例如上面的示例中,我們也可以使用for循環(huán)來生成隨機(jī)數(shù),只不過要在循環(huán)體內(nèi)判斷條件。但是在實(shí)際開發(fā)中,根據(jù)代碼邏輯和可讀性來選擇合適的循環(huán)語句是比較重要的。
8.總結(jié)
用 for 循環(huán)或 while 循環(huán)最終都是取決于任務(wù)的性質(zhì)和所需的迭代方式。
●for 循環(huán)適用于已知要遍歷的元素?cái)?shù)量的情況,例如在列表、元組或字符串等可迭代對象中遍歷元素。
●while 循環(huán)適用于需要在滿足某個(gè)條件時(shí)重復(fù)執(zhí)行某個(gè)塊代碼的情況,例如在執(zhí)行某些操作直到達(dá)到預(yù)期結(jié)果或用戶輸入正確值的情況。
●當(dāng)需要遍歷固定數(shù)量的元素時(shí), for 循環(huán)比 while 循環(huán)更方便。當(dāng)需要在滿足條件時(shí)重復(fù)執(zhí)行代碼時(shí), while 循環(huán)比 for 循環(huán)更適合。
總的來說,對于大多數(shù)情況,選擇 for 循環(huán)是更好的選擇,因?yàn)樗ǔ1?while 循環(huán)更簡單、更直觀。然而,在特定情況下,使用 while 循環(huán)可以更加靈活,特別是當(dāng)需要在不確定條件下循環(huán)執(zhí)行代碼時(shí)。