Java for循環(huán)詳解
對于java中的for循環(huán),我們用的最多的無非就是下面這個語句:
for (int i = 0; i < 10; i++) {
System.err.println(i);
}
但是對于for循環(huán)來說,它也有很多變體,如果不清楚了解for循環(huán)的結(jié)構(gòu)原理,遇上一些變體的for循環(huán),可能一時不太明白它的含義,for循環(huán)雖然有很多變體,但都離不開括號內(nèi)3條語句的模式(除了增強for循環(huán)模式,后面再討論)
for循環(huán)的結(jié)構(gòu):
for(語句A; 語句B; 語句C){
//循環(huán)體
}
其中,語句A在整個循環(huán)過程中,只會執(zhí)行一次;語句B必須是布爾類型的表達式(當(dāng)然也可以不寫,如果寫就必須是布爾類型表達式),通過該布爾表達式去判斷是否繼續(xù)執(zhí)行循環(huán)體;語句C會在每次循環(huán)結(jié)束后執(zhí)行,也就是說,循環(huán)體執(zhí)行多少次,語句C就會執(zhí)行多少次。
其中語句的執(zhí)行順序是:
語句A→(語句B → 循環(huán)體 → 語句C)→(語句B → 循環(huán)體 → 語句C)→ ... →退出循環(huán)
下面簡單介紹一些for循環(huán)的變體:
變體一:語句豐富化多樣化,只要保證語句A、C都是一條語句,語句B是布爾表達式,語句想怎么寫由你自己定。
for (int i = 0, j = 0; i < 10 | j< 12; i++, j++) {
System.err.println(i);
System.err.println(j);
System.err.println("=========");
}
變體二:語句A省略
boolean flag = true;
int m = 0;
for (;flag; m++){
if (m==10)
flag=false;
System.err.println(m);
}
變體三:語句B省略,此時只有從循環(huán)體內(nèi)退出循環(huán),否則是無限循環(huán)。
int m = 0;
for (;; m++){
if (m==10)
break;
System.err.println(m);
}
變體四:語句C省略
int m = 0;
for (;;){
if (m==10)
break;
System.err.println(m);
m++;
}
說明:以上的變體,只是相對于我們常用的形式來講的,變體的結(jié)構(gòu)本質(zhì)是不變的,我們沒必要去刻意的使用變體的形式。之所以提出來講,只是希望以后遇到變體的情況,能盡快看懂循環(huán)的含義,不至于看到別人寫的代碼,和自己寫的方式不一樣,然后一臉蒙圈。上面并未列出所有變體,簡單來說,語句A,B,C都是可以單獨省略的。
對于增強for循環(huán),就不多做介紹了,用的也比較多,基本結(jié)構(gòu)就是:
Integer[] arr = new Integer[]{1,2,3,4};
for (Integer a : arr){
System.err.println(a);
}
List<String> list = new ArrayList<>();
//add str...
for (String str : list){
System.err.println(str);
}
以上所述是小編給大家介紹的Java for循環(huán)詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
Java線程池ThreadPoolExecutor的使用及其原理詳細解讀
這篇文章主要介紹了Java線程池ThreadPoolExecutor的使用及其原理詳細解讀,線程池是一種多線程處理形式,處理過程中將任務(wù)添加到隊列,然后在創(chuàng)建線程后自動啟動這些任務(wù),線程池線程都是后臺線程,需要的朋友可以參考下2023-12-12
使用Idea或Datagrip導(dǎo)入excel數(shù)據(jù)的方法
這篇文章主要介紹了使用Idea或Datagrip導(dǎo)入excel數(shù)據(jù)的方法,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11
Springboot2 session設(shè)置超時時間無效的解決
這篇文章主要介紹了Springboot2 session設(shè)置超時時間無效的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07
解析ConcurrentHashMap: 預(yù)熱(內(nèi)部一些小方法分析)
ConcurrentHashMap是由Segment數(shù)組結(jié)構(gòu)和HashEntry數(shù)組結(jié)構(gòu)組成。Segment的結(jié)構(gòu)和HashMap類似,是一種數(shù)組和鏈表結(jié)構(gòu),今天給大家普及java面試常見問題---ConcurrentHashMap知識,一起看看吧2021-06-06

