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