作者:CHAITANYA SINGH
循環(huán)用于反復(fù)執(zhí)行同一組語句,直到滿足特定條件為止。在Java中,我們有三種類型的基本循環(huán):for、while和do-while。在本教程中,我們將學(xué)習(xí)如何在Java中使用for循環(huán)(for loop)。
for循環(huán)的語法:
for(初始化initialization;?循環(huán)條件condition;?遞增/遞減increment/decrement)
{
???statement(s);
}
for循環(huán)的執(zhí)行流程
當(dāng)程序在運(yùn)行的時(shí)候,解釋器一直在跟蹤要執(zhí)行的語句,我們稱之為控制流,或者程序的執(zhí)行流程。

第一步:在for循環(huán)中,首先進(jìn)行初始化,在整個(gè)for循環(huán)中,初始化部分的語句只在開始的時(shí)候執(zhí)行一次。
第二步:在每次迭代時(shí)評(píng)估for循環(huán)中的條件,如果條件為true(真)則執(zhí)行循環(huán)體內(nèi)的語句。一旦條件返回false(假),for循環(huán)中的語句就不會(huì)執(zhí)行,程序就跳到for循環(huán)外面的語句上運(yùn)行。
第三步:每次執(zhí)行for循環(huán)體后,程序回頭執(zhí)行for循環(huán)的遞增/遞減部分,更新循環(huán)計(jì)數(shù)器。
第四步:第三步后,程序跳轉(zhuǎn)到第二步,重新評(píng)估循環(huán)條件,決定是繼續(xù)執(zhí)行在for循環(huán)內(nèi)部的語句還是跳出for循環(huán)執(zhí)行后面的語句。
簡單for循環(huán)示例
classForLoopExample?{
????publicstaticvoidmain(String?args[]){
?????????for(inti=10;?i>1;?i--){
??????????????System.out.println("The?value?of?i?is:?"+i);
?????????}
????}
}
輸出:
The?value?of?i?is:?10
The?value?of?i?is:?9
The?value?of?i?is:?8
The?value?of?i?is:?7
The?value?of?i?is:?6
The?value?of?i?is:?5
The?value?of?i?is:?4
The?value?of?i?is:?3
The?value?of?i?is:?2
在上面的程序中:
int i = 1是初始化表達(dá)式;i > 1是否繼續(xù)循環(huán)的條件(布爾表達(dá)式,滿足條件就繼續(xù)循環(huán),不滿足條件就跳出循環(huán));i-是遞減操作
死循環(huán)
循環(huán)條件的布爾表達(dá)式和遞增/遞減運(yùn)算之間的互相協(xié)調(diào)非常重要,現(xiàn)在讓我們來看看下面這個(gè)例子:
classForLoopExample2?{
????publicstaticvoidmain(String?args[]){
?????????for(inti=1;?i>=1;?i++){
??????????????System.out.println("The?value?of?i?is:?"+i);
?????????}
????}
}
這是一個(gè)死循環(huán),我們初始化里給變量i賦值為1,循環(huán)條件是i>=1,因?yàn)閕的值是1,后面的遞增運(yùn)算i++只能讓變量i的值越來越大,所以這個(gè)循環(huán)條件i>=1永遠(yuǎn)都不會(huì)返回false。這最終會(huì)導(dǎo)致死循環(huán)條件。因此可見,增量/遞減操作的結(jié)果必須是能確保在某個(gè)時(shí)間點(diǎn)上,循環(huán)條件的返回值為false,這樣程序才可以跳出這個(gè)for循環(huán)。
下面是另一個(gè)for循環(huán)的死循環(huán)的例子:
//?infinite?loop
for(?;?;?)?{
????//?statement(s)
}
用for循環(huán)遍歷數(shù)組(array)的例子:
在這里,我們使用for循環(huán)遍歷和顯示數(shù)組里面的每個(gè)元素。
classForLoopExample3?{
????publicstaticvoidmain(String?args[]){
?????????intarr[]={2,11,45,9};
?????????//i?starts?with?0?as?array?index?starts?with?0?too
?????????for(inti=0;?i<arr.length;?i++){
??????????????System.out.println(arr[i]);
?????????}
????}
}
輸出:
2
11
45
9
增強(qiáng)型for循環(huán)
當(dāng)您想要遍歷數(shù)組/集合里面的每個(gè)元素時(shí),增強(qiáng)型的for循環(huán)很有用,非常易于編寫和理解。
讓我們采用上面編寫的相同示例,并使用增強(qiáng)型for循環(huán)來重寫它。
classForLoopExample3?{
???publicstaticvoidmain(String?args[]){
??????intarr[]={2,11,45,9};
??????for(intnum?:?arr)?{
?????????System.out.println(num);
??????}
???}
}
輸出:
2
11
45
9
注:在上面的示例中,我在增強(qiáng)型的for循環(huán)中將變量num的數(shù)據(jù)類型聲明為int(整數(shù)型)。我們將根據(jù)數(shù)組的數(shù)據(jù)類型來決定如何聲明這個(gè)變量的數(shù)據(jù)類型。例如,String類型的增強(qiáng)型for循環(huán)需要將這個(gè)變量聲明為String,如下所示:
String?arr[]={"hi","hello","bye"};
for(String?str?:?arr)?{
?????????System.out.println(str);
}