Java程序控制邏輯—流程控制
1 前言
任何一門語言都需要基本的流程控制語句,其思想也符合人類判斷問題或做事的邏輯過程。什么是流程控制呢?流程就是做一件事情的順序,或者說是次序。在程序設計中,流程就是要完成一個功能,而流程控制則是指如何在程序設計中控制完成某種功能的次序。本章將介紹Java語言中關于“流程控制”的使用方法。
2 條件語句
流程控制中最基本的就是條件執(zhí)行,也就是說,一些操作只能在某些條件滿足的情況下才執(zhí)行,在一些條件下執(zhí)行某種操作,在另外一些條件下執(zhí)行另外的操作。Java分支語句主要分為下述兩種。
2.1 if
條件語句是一個重要的編程語句,用于告訴程序在某個條件成立的情況下執(zhí)行某段語句,而在另一種情況下執(zhí)行另外的語句。
使用if條件語句,可選擇是否要執(zhí)行緊跟在條件之后的那個語句。關鍵字if之后是作為條件的“布爾表達式”。如果該表達式返回的結果為true,則執(zhí)行其后的語句;如果為false,則不執(zhí)行if條件之后的語句。if條件語句可分為簡單的if條件語句、if…else
語句和if…else if
多分支語句。
語法1:
if(條件判斷表達式){
語句1
}
說明:在if后面的條件語句中,必須是一個可以轉(zhuǎn)換成boolean
型的表達式,這個表達式需要用括號括起來。當表達式的值為true
時執(zhí)行語句1。
語法2:
if(條件判斷表達式){
語句1
}
else{
語句2
}
說明:表達式為true時執(zhí)行語句1,表達式為false時執(zhí)行語句2
語法3:
if(條件判斷表達式1){ ?? ?語句1 } else if(條件判斷表達式2){ ?? ?語句2 } else if(條件判斷表達式3){ ?? ?語句3 } ... else if(條件判斷表達式n) { ?? ?語句N } else{ ?? ?語句N }
說明:表達式1為true時執(zhí)行語句1,表達式1為false時判斷表達式2,表達式2為true時執(zhí)行語句2,表達式2為false時判斷表達式3,如此直至表達式n為false,則執(zhí)行最后一個else后的語句n。
2.2 switch
在進行多重選擇的時候,過多if-else-if
條件選擇語句的嵌套會造成程序維護上的困擾。在Java語言中提供了switch
條件選擇語句,使用它可以讓程序更加簡潔清楚。與if條件選擇語句不同的是,switch只有一個條件判斷表達式。switch是一種多選一的條件選擇語句,它是按照條件判斷表達式的運算結果來決定在多個程序分支中選擇其中之一的程序分支,并執(zhí)行這個程序分支內(nèi)的程序代碼。
switch條件選擇語句的語法如下:
switch (表達式) { ? ? case 數(shù)值1:語句1;break; ? ? case 數(shù)值2:語句2;break; ? ? case 數(shù)值3:語句3;break; ? ? ? ? ... ? ? default:語句0; }
說明:switch
的表達式類型為整型(包括byte、short、char、int等)、字符類型及枚舉類。switch語句將從與選項值相匹配的case標簽處開始執(zhí)行直到遇到break語句,或者執(zhí)行到switch語句的結束處為止。如果沒有相匹配的case標簽,而有default子句,就執(zhí)行這個子句。
3 循環(huán)語句
所謂循環(huán),就是多次重復執(zhí)行某些類似的操作,這個操作一般不是完全一樣的操作,而是類似的操作。循環(huán)語句是程序開發(fā)非常重要,也是使用頻率很高的一個技能點。在Java中,循環(huán)有4種形式,分別是while
、do/while
、for
和foreach
。
3.1 while
while 循環(huán)的形式是:
while(布爾表達式) { ?? ?語句塊; //可以是單條語句, 也可以是復合語句 }
執(zhí)行語句會在每一次循環(huán)前,判斷布爾表達式返回值是否為 true
。
3.2 do-while
do-while循環(huán)語句的一般格式如下:
do{ 語句塊; } while(布爾表達式);
do…while
語句與while
語句不同的是,它先執(zhí)行大括號內(nèi)的循環(huán)體,再判斷條件,如果條件不滿足,下次不再執(zhí)行循環(huán)體。也就是說,在判斷條件之前,就已經(jīng)執(zhí)行大括號內(nèi)的循環(huán)體。
3.3 for
for 循環(huán)可能是最常用的迭代形式。 該循環(huán)在第一次迭代之前執(zhí)行初始化。隨后,它會執(zhí)行布爾表達式,并在每次迭代結束時,進行某種形式的步進。for 循環(huán)的形式是:
for(初始化表達式;循環(huán)條件;迭代語句) { ? ?循環(huán)體; }
初始化語句是循環(huán)的初始狀態(tài),循環(huán)條件是條件判斷的布爾表達式,如果表達式的值為true,則執(zhí)行后面的語句,接下來執(zhí)行后面的迭代語句。如果條件判斷表達式第一次求值就為false,那么for循環(huán)不會進行任何的迭代,后面的循環(huán)體和迭代語句也不會執(zhí)行任何操作。
一次循環(huán)結束后,下一次循環(huán)開始前,執(zhí)行迭代部分的語句,然后判斷循環(huán)條件表達式的值,決定是否進行下一次循環(huán)。
3.4 for-in
Java 5 引入了更為簡潔的“增強版 for 循環(huán)”語法來操縱數(shù)組和集合。for-in
語法可以節(jié)省我們編寫代碼的時間。 更重要的是,它提高了代碼可讀性以及更好地描述代碼意圖而不是詳細說明這操作細節(jié)。
for-in的語句格式如下:
for(元素類型 元素變量 : 遍歷對象){ ? ?? ?循環(huán)體; }
大部分文檔也稱其為for-each
語法,但因為了不與 Java 8 新添的 forEach() 產(chǎn)生混淆,因此我稱之為 for-in 循環(huán)。
4 循環(huán)控制
在任何迭代語句的主體內(nèi),都可以使用 break
和 continue
來控制循環(huán)的流程。 其中,break 表示跳出當前循環(huán)體。而 continue
表示停止本次循環(huán),開始下一次循環(huán)。
4.1 break
break語句通常用在循環(huán)語句和開關語句中,例如用在開關語句switch中,break語句可以使程序跳出switch而執(zhí)行switch以后的語句,以防止程序進入死循環(huán)而無法退出。當break語句用于do…while
、for、while循環(huán)語句中時,可使程序終止循環(huán)。
4.2 continue
continue語句用來略過循環(huán)中剩下的語句,停止當前迭代,重新開始新的循環(huán),這和break語句的完全跳出循環(huán)是不一樣的。continue
僅僅出現(xiàn)在while、do…while、for語句的子語句塊中。也可以使用標簽來選擇需要終止的嵌套循環(huán)的層級。
5 碼農(nóng)洞見
5.1 GOTO語句有害論
程序之所以能夠按照人們的意愿執(zhí)行,主要依靠的是程序的控制結構。早期的程序員廣泛使用GOTO語句,它破壞了程序設計結構性,導致程序流程的混亂,使理解和調(diào)試程序都產(chǎn)生困難。1968年Dijkstra
等人發(fā)表了著名的論文《GOTO語句有害論》,即“所有有意義的程序流程都可以使用三種基本的結構來構成”。自此人們的編程方式發(fā)生重大變化正是這個原因,在Java程序設計中,雖然goto作為關鍵字保留了下來,但是一直沒有啟用。
5.2 結構化程序設計
結構化程序設計(Structured programming
)是一種經(jīng)典的編程模式,它強調(diào)用模塊化、積木式的方法來建立程序。采用結構化程序設計方法,可使程序的邏輯結構清晰、層次分明、可讀性好、可靠性強,從而提高了程序的開發(fā)效率,保證了程序質(zhì)量,改善了程序的可靠性。
一般來說程序的結構包含以下3種。
(1)順序結構。
(2)選擇結構。
(3)循環(huán)結構。
這3種不同的結構有一個共同點,就是它們都只有一個入口,也只有一個運行出口。這些單一的入口、出口可讓程序可控、易讀、好維護。
到此這篇關于Java程序控制邏輯—流程控制的文章就介紹到這了,更多相關Java流程控制內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
關于maven配置項目一直提示程序包不存在以及scope的坑
這篇文章主要介紹了關于maven配置項目一直提示程序包不存在以及scope的坑,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11Java的可變參數(shù)與Collections類的功能示例解析
這篇文章主要為大家介紹了Java的可變參數(shù)與Collections類的功能示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-05-05RestTemplate如何通過HTTP?Basic?Auth認證示例說明
這篇文章主要為大家介紹了RestTemplate如何通過HTTP?Basic?Auth認證的示例說明,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-03-03@TransactionalEventListener的使用和實現(xiàn)原理分析
這篇文章主要介紹了@TransactionalEventListener的使用和實現(xiàn)原理分析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12