Java流程控制之循環(huán)結(jié)構(gòu)while、do...while
本篇筆記內(nèi)容記錄while循環(huán)以及do…while循環(huán),下一篇將講述for循環(huán)以及延伸出來的增強(qiáng)型for循環(huán)(Java5新加)
前言:
在了解了選擇結(jié)構(gòu)之后,我們發(fā)現(xiàn),僅通過選擇結(jié)構(gòu),無法讓程序一直跑著,我們每次運(yùn)行就停止了。這在真實(shí)環(huán)境中肯定是不行的,比如網(wǎng)站的服務(wù)器,需要24小時(shí)無休地跑著,以及程序跑多少次等等。
為了解決這個(gè)問題,循環(huán)結(jié)構(gòu)自然而然地誕生了!
順序結(jié)構(gòu)的程序語句只能跑一次(執(zhí)行一次)。而很多時(shí)候,需要執(zhí)行的一個(gè)步驟需要多次實(shí)現(xiàn),這個(gè)時(shí)候使用循環(huán)結(jié)構(gòu)無疑是很好的選擇。
Java中有三種主要的循環(huán)結(jié)構(gòu):
- while 循環(huán)
- do…while 循環(huán)
- for 循環(huán)
1、while 循環(huán)
while是最基本的循環(huán),它的結(jié)構(gòu)為:
while( 布爾表達(dá)式 ) { //循環(huán)內(nèi)容 }
如圖:
實(shí)例助解:輸出10-15 x的值。
public static void main(String args[]) { int x = 10; while( x < 16 ) { System.out.print("x的值 : " + x ); x++; System.out.print("\n"); } }
輸出演示,如圖:
注意:一少部分情況需要循環(huán)一直執(zhí)行,如服務(wù)器的請(qǐng)求、響應(yīng)、監(jiān)聽等。
public static void main(String[] args) { while (true){ //等待客戶端連接 //定時(shí)檢查 //...... } }
注意:
- 循環(huán)條件一直為true就會(huì)造成無限循環(huán)(死循環(huán)),我們正常的業(yè)務(wù)編程中應(yīng)該盡量避免無限循環(huán)。
- 無限循環(huán)可能會(huì)影響程序性能或者造成程序崩潰。
實(shí)例助解:1+2+3+...+100的和
public static void main(String[] args) { int i = 0; int sum = 0; while (i <= 100) { sum = sum+i; i++; } System.out.println("Sum= " + sum); }
輸出演示,如圖:
相關(guān)故事:
其實(shí)說到1+2+3+…+100這個(gè)實(shí)例,我們可能會(huì)聯(lián)想到一位有名的數(shù)學(xué)家——高斯,他9歲時(shí)實(shí)現(xiàn)了1到100的快速求和。具體點(diǎn)兒來說,高斯當(dāng)時(shí)用很短的時(shí)間計(jì)算出了小學(xué)老師布置的任務(wù):對(duì)自然數(shù)從1到100的求和。他所使用的方法是:對(duì)50對(duì)構(gòu)造成和101的數(shù)列求和(1+100,2+99,3+98……),同時(shí)得到結(jié)果:5050。
2、do…while 循環(huán)
對(duì)于 while 語句而言,如果不滿足條件,則不能進(jìn)入循環(huán)。但有時(shí)候我們需要即使不滿足條件,也至少執(zhí)行一次。這個(gè)時(shí)候,do…while
的出現(xiàn)解決了這一問題。do…while
循環(huán)和 while
循環(huán)相似,不同的是,do…while 循環(huán)至少會(huì)執(zhí)行一次。
do { //代碼語句 }while(布爾表達(dá)式);
如圖:
我們用do…while循環(huán)一下上面的1-100之和的例子
public static void main(String[] args) { int i = 0; int sum = 0; do { sum = sum+i; i++; }while (i <= 100); System.out.println("Sum= " + sum); }
輸出演示,如圖:
3、while和do…while的區(qū)別
while
先判斷后執(zhí)行。do…while
是先執(zhí)行后判斷Do…while
總是保證循環(huán)體會(huì)被至少執(zhí)行一次
實(shí)例助解:a=1時(shí) while(a<1)和do…while(a<1)的區(qū)別
public static void main(String[] args) { int a = 1; System.out.println("==========while=========="); while(a<1){ System.out.println(a); a++; } System.out.println("==========do...while=========="); do{ System.out.println(a); a++; } while (a<1); }
輸出演示,如圖:
到此這篇關(guān)于Java流程控制之循環(huán)結(jié)構(gòu)while、do...while的文章就介紹到這了,更多相關(guān)Java循環(huán)結(jié)構(gòu)while、do...while內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Druid連接池的自定義過濾功能實(shí)現(xiàn)方法
在數(shù)據(jù)密集型應(yīng)用中,監(jiān)控和分析數(shù)據(jù)庫操作對(duì)于確保性能和穩(wěn)定性至關(guān)重要,本文將探討如何實(shí)現(xiàn)一個(gè)自定義的Druid過濾器來捕獲數(shù)據(jù)庫請(qǐng)求并進(jìn)行日志記錄,以輔助開發(fā)和維護(hù)工作,需要的朋友可以參考下2023-11-11java基礎(chǔ)-給出一個(gè)隨機(jī)字符串,判斷有多少字母?多少數(shù)字?
這篇文章主要介紹了java基礎(chǔ)-給出一個(gè)隨機(jī)字符串,判斷有多少字母?多少數(shù)字?文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04基于request.getAttribute與request.getParameter的區(qū)別詳解
本篇文章小編為大家介紹,基于request.getAttribute與request.getParameter的區(qū)別詳解。需要的朋友參考下2013-04-04SpringBoot中的錯(cuò)誤處理機(jī)制源碼解析
這篇文章主要介紹了SpringBoot中的錯(cuò)誤處理機(jī)制源碼解析,springboot根據(jù)訪問者的request中的Accept屬性來判斷要返回什么樣的數(shù)據(jù),SpringBoot存在一個(gè)錯(cuò)誤處理機(jī)制,會(huì)根據(jù)不同請(qǐng)求返回不同的結(jié)果,需要的朋友可以參考下2023-12-12