一文詳解Java中流程控制語句
概述
在一個程序執(zhí)行的過程中,各條語句的執(zhí)行順序對程序的結果是有直接影響的。也就是說,程序的流程對運行結果有直接的影響。所以,我們必須清楚每條語句的執(zhí)行流程。而且,很多時候我們要通過控制語句的執(zhí)行順序來實現(xiàn)我們要完成的功能。
判斷語句
if
格式:
if (關系表達式){ 語句體; }
執(zhí)行流程:
- 首先判斷關系表達式看其結果是true還是false
- 如果是true就執(zhí)行語句體
- 如果是false就不執(zhí)行語句體
if...else
格式:
if(關系表達式) { 語句體1; }else { 語句體2; }
執(zhí)行流程:
- 首先判斷關系表達式看其結果是true還是false
- 如果是true就執(zhí)行語句體1
- 如果是false就執(zhí)行語句體2
public static void main(String[] args){ // 判斷給定的數(shù)據(jù)是奇數(shù)還是偶數(shù) // 定義變量 int a = 1; if(a % 2 == 0) { System.out.println("a是偶數(shù)"); } else{ System.out.println("a是奇數(shù)"); } System.out.println("結束"); }
if..else if...else
格式:
if (判斷條件1) { 執(zhí)行語句1; } else if (判斷條件2) { 執(zhí)行語句2; } ... }else if (判斷條件n) { 執(zhí)行語句n; } else { 執(zhí)行語句n+1; }
執(zhí)行流程:
- 首先判斷關系表達式1看其結果是true還是false
- 如果是true就執(zhí)行語句體1
- 如果是false就繼續(xù)判斷關系表達式2看其結果是true還是false
- 如果是true就執(zhí)行語句體2
- 如果是false就繼續(xù)判斷關系表達式…看其結果是true還是false
- …
- 如果沒有任何關系表達式為true,就執(zhí)行語句體n+1。
案例:
public static void main(String[] args) { // x和y的關系滿足如下: // x>=3 y = 2x + 1; //‐1<=x<3 y = 2x; // x<=‐1 y = 2x – 1; // 根據(jù)給定的x的值,計算出y的值并輸出。 // 定義變量 int x = 5; int y; if (x>= 3) { y = 2 * x + 1; } else if (x >= ‐1 && x < 3) { y = 2 * x; } else { y = 2 * x ‐ 1; } System.out.println("y的值是:"+y); }
if語句和三元運算符的互換
在某些簡單的應用中,if語句是可以和三元運算符互換使用的。
public static void main(String[] args) { int a = 10; int b = 20; //定義變量,保存a和b的較大值 int c; if(a > b) { c = a; } else { c = b; } //可以上述功能改寫為三元運算符形式 c = a > b ? a:b; }
選擇語句
switch
格式:
switch(表達式) { case 常量值1: 語句體1; break; case 常量值2: 語句體2; break; ... default: 語句體n+1; break; }
執(zhí)行流程:
- 首先計算出表達式的值
- 其次,和case依次比較,一旦有對應的值,就會執(zhí)行相應的語句,在執(zhí)行的過程中,遇到break就會結束。
- 最后,如果所有的case都和表達式的值不匹配,就會執(zhí)行default語句體部分,然后程序結束掉。
public static void main(String[] args) { //定義變量,判斷是星期幾 int weekday = 6; //switch語句實現(xiàn)選擇 switch(weekday) { case 1: System.out.println("星期一"); break; case 2: System.out.println("星期二"); break; case 3: System.out.println("星期三"); break; case 4: System.out.println("星期四"); break; case 5: System.out.println("星期五"); break; case 6: System.out.println("星期六"); break; case 7: System.out.println("星期日"); break; default: System.out.println("你輸入的數(shù)字有誤"); break; } }
switch語句中,表達式的數(shù)據(jù)類型,可以是byte,short,int,char,enum(枚舉),JDK7后可以接收字符串。
case的穿透性
在switch語句中,如果case的后面不寫break,將出現(xiàn)穿透現(xiàn)象,也就是不會在判斷下一個case的值,直接向后運 行,直到遇到break,或者整體switch結束。
public static void main(String[] args) { int i = 5; switch (i){ case 0: System.out.println("執(zhí)行case0"); break; case 5: System.out.println("執(zhí)行case5"); case 10: System.out.println("執(zhí)行case10"); default: System.out.println("執(zhí)行default"); } }
上述程序中,執(zhí)行case5后,由于沒有break語句,程序會一直向后走,不會在判斷case,也不會理會break,直接運行完整體switch。 由于case存在穿透性,因此初學者在編寫switch語句時,必須要寫上break。
循環(huán)語句
循環(huán)語句可以在滿足循環(huán)條件的情況下,反復執(zhí)行某一段代碼,這段被重復執(zhí)行的代碼被稱為循環(huán)體語句,當反復執(zhí)行這個循環(huán)體時,需要在合適的時候把循環(huán)判斷條件修改為false,從而結束循環(huán),否則循環(huán)將一直執(zhí)行下去,形成死循環(huán)。
for
格式:
for(初始化表達式①; 布爾表達式②; 步進表達式④){ 循環(huán)體③ }
執(zhí)行流程: 執(zhí)行順序:①②③④>②③④>②③④…②不滿足為止。 ①負責完成循環(huán)變量初始化 ②負責判斷是否滿足循環(huán)條件,不滿足則跳出循環(huán) ③具體執(zhí)行的語句 ④循環(huán)后,循環(huán)條件所涉及變量的變化情況
while
格式:
初始化表達式① while(布爾表達式②){ 循環(huán)體③ 步進表達式④ }
執(zhí)行流程: 執(zhí)行順序:①②③④>②③④>②③④…②不滿足為止。 ①負責完成循環(huán)變量初始化。 ②負責判斷是否滿足循環(huán)條件,不滿足則跳出循環(huán)。 ③具體執(zhí)行的語句。 ④循環(huán)后,循環(huán)變量的變化情況。 while循環(huán)輸出10次HelloWorld:
public static void main(String[] args) { //while循環(huán)實現(xiàn)打印10次HelloWorld //定義初始化變量 int i = 1; //循環(huán)條件<=10 while(i<=10){ System.out.println("HelloWorld"); //步進 i++; } }
do...while
格式:
初始化表達式① do{ 循環(huán)體③ 步進表達式④ }while(布爾表達式②);
執(zhí)行流程: 執(zhí)行順序:①③④>②③④>②③④…②不滿足為止。 ①負責完成循環(huán)變量初始化。 ②負責判斷是否滿足循環(huán)條件,不滿足則跳出循環(huán)。 ③具體執(zhí)行的語句 ④循環(huán)后,循環(huán)變量的變化情況 輸出10次HelloWorld:
public static void main(String[] args) { int x=1; do { System.out.println("HelloWorld"); x++; }while(x<=10); }
do...while循環(huán)的特點:無條件執(zhí)行一次循環(huán)體,即使我們將循環(huán)條件直接寫成false,也依然會循環(huán)一次。這樣的 循環(huán)具有一定的風險性,因此初學者不建議使用do...while循環(huán)。
public static void main(String[] args){ do{ System.out.println("無條件執(zhí)行一次"); }while(false); }
for 和 while 的小區(qū)別
- 控制條件語句所控制的那個變量,在for循環(huán)結束后,就不能再被訪問到了,而while循環(huán)結束還可以繼續(xù)使用,如果你想繼續(xù)使用,就用while,否則推薦使用for。原因是for循環(huán)結束,該變量就從內(nèi)存中消失,能夠提高內(nèi)存的使用效率。
- 在已知循環(huán)次數(shù)的時候使用推薦使用for,循環(huán)次數(shù)未知的時推薦使用while。
跳出語句
break
使用場景:終止switch或者循環(huán)
- 在選擇結構switch語句中
- 在循環(huán)語句中
- 離開使用場景的存在是沒有意義的
public static void main(String[] args) { for (int i = 1; i<=10; i++) { //需求:打印完兩次HelloWorld之后結束循環(huán) if(i == 3){ break; } System.out.println("HelloWorld"+i); } }
continue
使用場景:結束本次循環(huán),繼續(xù)下一次的循環(huán)
public static void main(String[] args) { for (int i = 1; i <= 10; i++) { //需求:不打印第三次HelloWorld if(i == 3){ continue; } System.out.println("HelloWorld"+i); } }
死循環(huán)
死循環(huán):也就是循環(huán)中的條件永遠為true,死循環(huán)的是永不結束的循環(huán)。例如:while(true){}。
嵌套循環(huán)
所謂嵌套循環(huán),是指一個循環(huán)的循環(huán)體是另一個循環(huán)。比如for循環(huán)里面還有一個for循環(huán),就是嵌套循環(huán)???共的循環(huán)次數(shù)=外循環(huán)次數(shù)*內(nèi)循環(huán)次數(shù) 嵌套循環(huán)格式:
for(初始化表達式①; 循環(huán)條件②; 步進表達式⑦) { for(初始化表達式③; 循環(huán)條件④; 步進表達式⑥) { 執(zhí)行語句⑤; } }
嵌套循環(huán)執(zhí)行流程: 執(zhí)行順序:①②③④⑤⑥>④⑤⑥>⑦②③④⑤⑥>④⑤⑥ 外循環(huán)一次,內(nèi)循環(huán)多次。 比如跳繩:一共跳5組,每組跳10個。5組就是外循環(huán),10個就是內(nèi)循環(huán)。
到此這篇關于一文詳解Java中流程控制語句的文章就介紹到這了,更多相關Java流程控制語句內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
關于@Autowierd && @Resource 你真的了解嗎
這篇文章主要介紹了關于@Autowierd && @Resource的具體使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08Lombok之@AllArgsConstructor的使用方式
這篇文章主要介紹了Lombok之@AllArgsConstructor的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09Springboot集成JUnit5優(yōu)雅進行單元測試的示例
這篇文章主要介紹了Springboot集成JUnit5優(yōu)雅進行單元測試的示例,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下2020-10-10通過Java連接SQL?Server數(shù)據(jù)庫的超詳細操作流程
java相對于其他語言(例如c,c++等)連接數(shù)據(jù)庫要方便得多,那么如何連接呢?下面這篇文章主要給大家介紹了關于通過Java連接SQL?Server數(shù)據(jù)庫的超詳細操作流程,需要的朋友可以參考下2023-03-03