Java for循環(huán)詳解
對(duì)于java中的for循環(huán),我們用的最多的無(wú)非就是下面這個(gè)語(yǔ)句:
for (int i = 0; i < 10; i++) { System.err.println(i); }
但是對(duì)于for循環(huán)來(lái)說(shuō),它也有很多變體,如果不清楚了解for循環(huán)的結(jié)構(gòu)原理,遇上一些變體的for循環(huán),可能一時(shí)不太明白它的含義,for循環(huán)雖然有很多變體,但都離不開(kāi)括號(hào)內(nèi)3條語(yǔ)句的模式(除了增強(qiáng)for循環(huán)模式,后面再討論)
for循環(huán)的結(jié)構(gòu):
for(語(yǔ)句A; 語(yǔ)句B; 語(yǔ)句C){ //循環(huán)體 }
其中,語(yǔ)句A在整個(gè)循環(huán)過(guò)程中,只會(huì)執(zhí)行一次;語(yǔ)句B必須是布爾類(lèi)型的表達(dá)式(當(dāng)然也可以不寫(xiě),如果寫(xiě)就必須是布爾類(lèi)型表達(dá)式),通過(guò)該布爾表達(dá)式去判斷是否繼續(xù)執(zhí)行循環(huán)體;語(yǔ)句C會(huì)在每次循環(huán)結(jié)束后執(zhí)行,也就是說(shuō),循環(huán)體執(zhí)行多少次,語(yǔ)句C就會(huì)執(zhí)行多少次。
其中語(yǔ)句的執(zhí)行順序是:
語(yǔ)句A→(語(yǔ)句B → 循環(huán)體 → 語(yǔ)句C)→(語(yǔ)句B → 循環(huán)體 → 語(yǔ)句C)→ ... →退出循環(huán)
下面簡(jiǎn)單介紹一些for循環(huán)的變體:
變體一:語(yǔ)句豐富化多樣化,只要保證語(yǔ)句A、C都是一條語(yǔ)句,語(yǔ)句B是布爾表達(dá)式,語(yǔ)句想怎么寫(xiě)由你自己定。
for (int i = 0, j = 0; i < 10 | j< 12; i++, j++) { System.err.println(i); System.err.println(j); System.err.println("========="); }
變體二:語(yǔ)句A省略
boolean flag = true; int m = 0; for (;flag; m++){ if (m==10) flag=false; System.err.println(m); }
變體三:語(yǔ)句B省略,此時(shí)只有從循環(huán)體內(nèi)退出循環(huán),否則是無(wú)限循環(huán)。
int m = 0; for (;; m++){ if (m==10) break; System.err.println(m); }
變體四:語(yǔ)句C省略
int m = 0; for (;;){ if (m==10) break; System.err.println(m); m++; }
說(shuō)明:以上的變體,只是相對(duì)于我們常用的形式來(lái)講的,變體的結(jié)構(gòu)本質(zhì)是不變的,我們沒(méi)必要去刻意的使用變體的形式。之所以提出來(lái)講,只是希望以后遇到變體的情況,能盡快看懂循環(huán)的含義,不至于看到別人寫(xiě)的代碼,和自己寫(xiě)的方式不一樣,然后一臉蒙圈。上面并未列出所有變體,簡(jiǎn)單來(lái)說(shuō),語(yǔ)句A,B,C都是可以單獨(dú)省略的。
對(duì)于增強(qiáng)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)詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
springCloud中的Sidecar多語(yǔ)言支持詳解
這篇文章主要介紹了springCloud中的Sidecar多語(yǔ)言支持詳解,Sidecar是將一組緊密結(jié)合的任務(wù)與主應(yīng)用程序共同放在一臺(tái)主機(jī)Host中,但會(huì)將它們部署在各自的進(jìn)程或容器中,需要的朋友可以參考下2024-01-01Java CyclicBarrier源碼層分析與應(yīng)用
這篇文章主要介紹了Java CyclicBarrier的源碼層分析與應(yīng)用,CyclicBarrier也叫同步屏障,可以讓一組線程達(dá)到一個(gè)屏障時(shí)被阻塞,直到最后一個(gè)線程達(dá)到屏障,感興趣的的朋友可以參考下2023-12-12Java、C++中子類(lèi)對(duì)父類(lèi)函數(shù)覆蓋的可訪問(wèn)性縮小的區(qū)別介紹
這篇文章主要給大家介紹了關(guān)于Java、C++中子類(lèi)對(duì)父類(lèi)函數(shù)覆蓋的可訪問(wèn)性縮小的區(qū)別的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-01-01Java加密解密工具(適用于JavaSE/JavaEE/Android)
這篇文章主要介紹了Java加密解密工具,適用于JavaSE/JavaEE/Android,感興趣的小伙伴們可以參考一下2016-04-04springboot+jwt+微信小程序授權(quán)登錄獲取token的方法實(shí)例
本文主要介紹了springboot+jwt+微信小程序授權(quán)登錄獲取token的方法實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03Java Socket+mysql實(shí)現(xiàn)簡(jiǎn)易文件上傳器的代碼
最近在做一個(gè)小項(xiàng)目,項(xiàng)目主要需求是實(shí)現(xiàn)一個(gè)文件上傳器,通過(guò)客戶端的登陸,把本地文件上傳到服務(wù)器的數(shù)據(jù)庫(kù)(本地的)。下面通過(guò)本文給大家分享下實(shí)現(xiàn)代碼,感興趣的朋友一起看看吧2016-10-10SpringCloud?Gateway讀取Request?Body方式
這篇文章主要介紹了SpringCloud?Gateway讀取Request?Body方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03springboot項(xiàng)目中引入本地依賴jar包并打包到lib文件夾中
這篇文章主要介紹了springboot項(xiàng)目中引入本地依賴jar包,如何打包到lib文件夾中,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04