關(guān)于Java for循環(huán)的正確用法介紹
一. 循環(huán)結(jié)構(gòu)
1. 概念
在學(xué)習(xí)Java里的循環(huán)之前,我們先來了解一下到底什么是循環(huán),以及循環(huán)的作用。我們先來看下面這張圖:
大家想一下,我們在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é)生的成績等。
2. 實(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)
接下來分別針對這幾種實(shí)現(xiàn)方式,結(jié)合代碼案例教會(huì)大家怎么進(jìn)行循環(huán)操作。
二. for循環(huán)
首先我們來學(xué)習(xí)一下Java里的for循環(huán),這也是我們開發(fā)時(shí)最常用的一種循環(huán)形式。
1. 語法
for循環(huán)的基本語法如下:
for(①.聲明并初始化循環(huán)變量;②.判斷循環(huán)條件;④.改變循環(huán)變量值){ //③.循環(huán)體 }
語法說明:
for循環(huán)最先執(zhí)行初始化步驟。在這里可以聲明一種類型,但可以初始化一個(gè)或多個(gè)循環(huán)控制變量,也可以是空語句;
判斷循環(huán)條件,檢測布爾表達(dá)式的值。如果為 true,循環(huán)體被執(zhí)行。如果為false,循環(huán)終止,開始執(zhí)行循環(huán)體后面的語句。且for循環(huán)的執(zhí)行次數(shù)在執(zhí)行前就已經(jīng)是確定的。
執(zhí)行一次循環(huán)后,就會(huì)更新一次循環(huán)控制變量的值;
再次檢測布爾表達(dá)式,循環(huán)執(zhí)行上面的過程。
2. 執(zhí)行流程
根據(jù)上面的for循環(huán)語法,把for循環(huán)的執(zhí)行流程給大家做個(gè)詳細(xì)的解釋:
首先我們要在第①步聲明并初始化一個(gè)變量,該操作在循環(huán)中只會(huì)執(zhí)行一次;
每次循環(huán)之前,在第②步判斷循環(huán)條件是否成立,只有當(dāng)條件為true才會(huì)執(zhí)行,如果條件為false則結(jié)束循環(huán);
每次循環(huán)時(shí),都會(huì)在③中執(zhí)行循環(huán)體內(nèi)的代碼;
每次循環(huán)結(jié)束后,會(huì)自動(dòng)執(zhí)行第④部分,改變變量的初始值;
for循環(huán)中①、②、④部分都可以省略不寫,但必須存在兩個(gè)”分號;“,也可以只寫一部分;
我們聲明變量類型時(shí),不一定非得是int,最后改變初始值也不一定非得是++;
for循環(huán)中支持嵌套循環(huán)。
根據(jù)上面的步驟,把重點(diǎn)步驟給大家總結(jié)如下:
①-->②-->③-->④-->②-->③-->④-->②-->③-->④-.....-②
如下圖所示:
3. 基本案例
在了解了基本概念之后,再通過一個(gè)案例來給大家講解。
3.1 案例一
需求:循環(huán)輸出100遍 ”跟一哥學(xué)java“
/** * @author */ public class Demo02 { public static void main(String[] args) { //for循環(huán),這里的i就是一個(gè)局部變量 for( int i=0; i<100; i++) { System.out.println("跟一哥學(xué)java,i="+i); } } }
注意,上面for循環(huán)中定義的變量i就是一個(gè)局部變量哦!
3.2 案例二
需求:計(jì)算1-100的和,1+2+3+4+5+...+100
/** * @author */ public class Demo02 { public static void main(String[] args) { // 計(jì)算1-100的和,1+2+3+4+5+...+100 //定義一個(gè)用于存儲(chǔ)”和“的局部變量 int sum = 0; for (int i = 1; i <= 100; i++) { // i = 1; // sum=0+1; // i = 2; // sum= 1+2; sum = sum + i; } System.out.println("sum=" + sum); } }
4. 循環(huán)嵌套
在循環(huán)中是支持嵌套的,也就是說一個(gè)for循環(huán)里面可以嵌套另一個(gè)for循環(huán)。有的小伙伴會(huì)很好奇,for循環(huán)中可以嵌套幾個(gè)for循環(huán)?其實(shí)理論上可以嵌套很多,但為了效率和代碼的可讀性考慮,for循環(huán)的嵌套最好不要超過3層,否則效率真的很低,尤其是在大量循環(huán)時(shí)。
4.1 案例一
需求:打印出一個(gè)三角形,用“*”來表示。
/** * @author */ public class Demo02 { public static void main(String[] args) { // for循環(huán)嵌套--打印出一個(gè)三角形,用“*”來表示 for (int i = 1; i <= 5; i++) { //定義第2個(gè)局部變量j,j設(shè)置為<=i for (int j = 1; j <= i; j++) { //這里千萬不要換行哦 System.out.print(" * "); } //這里一定要換行哦 System.out.println(); } } }
效果如下圖所示:
4.2 案例二
需求:打印出九九乘法表。
/** * @author */ public class Demo02 { public static void main(String[] args) { // for循環(huán)嵌套--打印出一個(gè)三角形,用“*”來表示 for (int i = 1; i <= 5; i++) { //定義第2個(gè)局部變量j,j設(shè)置為<=i for (int j = 1; j <= i; j++) { //這里千萬不要換行哦 System.out.print(" * "); } //這里一定要換行哦 System.out.println(); } } }
效果如下圖所示:
5. 幾種變形寫法
以上的案例,是for循環(huán)的常用寫法,但實(shí)際上for循環(huán)還有幾種”變異“的寫法。對這些變形的寫法,大家可以掌握了解。
5.1 定義多個(gè)初始化變量
我們先來回顧一下for循環(huán)的基本語法:
for(①.聲明并初始化循環(huán)變量;②.判斷循環(huán)條件;④.改變循環(huán)變量值){ //③.循環(huán)體 }
在for循環(huán)中,①中可以同時(shí)定義為多個(gè)變量i、j、k等,②中的判斷條件不能使用多個(gè)變量,④中可以同時(shí)使用多個(gè)變量,并更改變量的值,案例如下所示:
/** * @author * */ public class Demo02 { public static void main(String[] args) { //①中可以同時(shí)定義為多個(gè)變量i,j,k等; //②中的判斷條件不能使用多個(gè)變量; //④中可以同時(shí)使用多個(gè)變量,并更改變量的值 for (int i = 0,j=0; i < 100; i++,j++) { System.out.println("跟一一哥學(xué)java,i=" + i+",j="+j); } } }
5.2 簡寫形式
在for循行中,第①/②/④這幾部分的內(nèi)容都是可以省略簡寫的。
/** * @author */ public class Demo02 { public static void main(String[] args) { //簡寫形式1:在第一部分中簡寫變量的聲明 //int i = 0; //for (; i < 100; i++) { // System.out.println("跟一一哥學(xué)java,i=" + i); //} //簡寫形式2:在第①和④中簡寫 //int i = 0; //for ( ; i < 100; ) { // i++; // System.out.println("跟一一哥學(xué)java,i=" + i); //} //簡寫形式3,①/②/④都簡寫--->死循環(huán) int i = 0; for (;;) { i++; System.out.println("跟一一哥學(xué)java,i=" + i); } } }
我們一定要注意,如果是第三種簡寫形式,把①/②/④都簡寫了,就會(huì)成為死循環(huán),本段程序會(huì)一直不停地打印下去。此時(shí)我們可以點(diǎn)擊控制臺的”紅色“按鈕停止程序的運(yùn)行,如下圖所示。
三. 結(jié)語
至此,就把Java里的for循環(huán)講解完畢了?,F(xiàn)在你知道for循環(huán)是怎么回事了嗎?
以上就是關(guān)于Java for循環(huán)的正確用法介紹的詳細(xì)內(nèi)容,更多關(guān)于Java for循環(huán)的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
spring boot利用docker構(gòu)建gradle項(xiàng)目的實(shí)現(xiàn)步驟
這篇文章主要給大家介紹了關(guān)于spring boot利用docker構(gòu)建gradle項(xiàng)目的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用spring boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2018-05-05SpringBoot如何使用TestEntityManager進(jìn)行JPA集成測試
TestEntityManager是Spring Framework提供的一個(gè)測試框架,它可以幫助我們進(jìn)行 JPA 集成測試,在本文中,我們將介紹如何使用 TestEntityManager 進(jìn)行 JPA 集成測試,感興趣的跟著小編一起來學(xué)習(xí)吧2023-06-06解決MyEclipse6.5無法啟動(dòng),一直停留剛開始啟動(dòng)界面的詳解
本篇文章是對解決MyEclipse6.5無法啟動(dòng),一直停留剛開始啟動(dòng)界面的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05解決tomcat發(fā)布工程后,WEB-INF/classes下文件不編譯的問題
這篇文章主要介紹了解決tomcat發(fā)布工程后,WEB-INF/classes下文件不編譯的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12springboot+HttpInvoke?實(shí)現(xiàn)RPC調(diào)用的方法
RPC框架大家或多或少都用過,出自于阿里系的就有dubbo,HSF,sofaRPC等,今天通過本文給大家介紹springboot+HttpInvoke?實(shí)現(xiàn)RPC調(diào)用的方法,感興趣的朋友一起看看吧2022-03-03Java 字節(jié)數(shù)組(byte[])和整型(int)的相互轉(zhuǎn)換
在Java編程中,有時(shí)需要將字節(jié)類型(byte)轉(zhuǎn)換為整數(shù)類型(int),或者反過來轉(zhuǎn)換,本文主要介紹了Java 字節(jié)數(shù)組(byte[])和整型(int)的相互轉(zhuǎn)換,感興趣的可以了解一下2023-12-12使用@JsonFormat和@DateTimeFormat對Date格式化操作
這篇文章主要介紹了使用@JsonFormat和@DateTimeFormat對Date格式化操作,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08