Java基礎之流程控制語句
流程控制語句
流程控制,顧名思義在程序流程中進行控制操作。其實對於流程控制,大多數人在高中的數學中就見到過,只不過那個時候叫做“流程圖”。
Java中的流程控制語句按結構分為:順序結構、選擇結構、循環結構(不分先後順序)。
循環結構:循環語句可以在滿足循環條件的情況下,反復執行某一段代碼,這段被重復執行的代碼被稱為循環體語句,當反復執行這個循環體時,需要在合適的時候把循環判斷條件改為false,從而結束循環,否則循環將一直執行下去,形成死循環
循環語句的組成:
– 初始化語句:
- 一條或者多條語句,這些語句完成一些初始化操作。
– 判斷條件語句:
- 這是一個boolean 表達式,這個表達式能決定是否執行循環體。
– 循環體語句:
- 這個部分是循環體語句,也就是我們要多次做的事情。
– 控制條件語句:
- 這個部分在一次循環體結束後,下一次循環判斷條件執行前執行。通過用於控制循環條件中的變量,使得循環在合適的時候結束。
1.順序結構:
從上到下依次順序
選擇結構(if語句):
if語句格式1: if(關系表達式){語句體}
執行流程:a. 首先計算關系表達式的值,看是true或者false
b. 如果是true就執行語句體
c. 如果是false就不執行語句體
if語句格式2:if(關系表達式){語句體1}else{語句體2}
執行流程:a. 首先判斷關系表達式看其結果是true或者false
b. 如果是true就執行語句體1
c. 如果是false就執行語句體2
if語句格式1/2(主體代碼):
int score = 85; if(score > 90){ System.out.println("獎勵一個蘋果"); }else{ System.out.println("獎勵一本五年高考三年模擬"); }
解析:該段代碼的含義是,定義int型變量score並賦值85,進入if判斷語句,首先對關系表達式(score>90)進行計算,如果score大於90那麽輸出"獎勵一個蘋果",否則輸出"獎勵一本五年高考三年模擬"。因為85<90,結果為false,進入下一個語句體並打印結果
運行結果:"獎勵一本五年高考三年模擬"
if語句格式3:if(關系表達式1){語句體1}else if(關系表達式2){語句體2}else{語句體n}
執行流程:a. 首先判斷關系表達式看其結果是true或者false
b. 如果是true就執行語句體1
c. 如果是false,就繼續計算關系表達式2的值,看其結果是true或者false
d.如果是false就繼續計算表達式3的是,依次類推
註:格式3一般是在需要多重判斷的情況下使用
if語句格式3(主體代碼):
1 int score = 85; 2 if(score > 90){ 3 System.out.println("獎勵一個蘋果"); 4 }else if(score > 70){ 5 System.out.println("獎勵一塊橡皮"); 6 }else{ 7 System.out.println("獎勵一本五年高考三年模擬"); 8 }
解析:該段代碼的含義是,定義int型變量score並賦值85,進入if判斷語句,首先對關系表達式1(score > 90)進行計算,如果 score 值大於90,則輸出“獎勵一個蘋果”,否則進入關系表達式2(score > 70)進行計算,如果score 是介於 70--90 之間,則輸出“獎勵一塊橡皮”,如果成績小於等於 70 ,則輸出"獎勵一本五年高考三年模擬"
運行結果:獎勵一塊橡皮
案例:
1 String today = "周末"; 2 String weather = "晴朗"; 3 if(today.equals("周末")){ 4 if(weather.equals("晴朗")){ 5 System.out.println("去遊樂場玩"); 6 }else{ 7 System.out.println("看電影"); 8 } 9 }else{ 10 System.out.println("在家寫作業"); 11 }
運行結果:去遊樂場玩
選擇結構(switch語句):
switch(表達式){
case值1:
語句體1
break;
case值1:
語句體1
break;
…
default:
語句體n+1:
break;
}
格式解釋:
表達式():byte short int char
JDK5以後可以是枚舉
JDK7以後可以是字符串
case後面的值:就是用來和表達式的值進行匹配的內容
break:表示中斷的意思,跳出該循環
default:所有的值都不匹配的時候,就用default
執行流程:
- 首先計算表達式的值
- 拿著該表達式的值,依次和case後面的值進行比較,就執行對應的語句體,遇到break就結束
- 如果所有的case都不匹配,就執行語句體n+1
註:case語句下沒有break,會導致case穿透
案例1(有break):
1 int num = 1; 2 switch (num) { 3 case 1: 4 System.out.println("獎勵一部手機"); 5 break; 6 case 2: 7 System.out.println("獎勵一個IPad"); 8 break; 9 case 3: 10 System.out.println("獎勵一頓美食"); 11 break; 12 default: 13 System.out.println("做作業"); 14 }
運行結果:獎勵一部手機
案例2(無break):
1 int num = 1; 2 switch (num) { 3 case 1: 4 System.out.println("獎勵一部手機"); 5 //break; 6 case 2: 7 System.out.println("獎勵一個IPad"); 8 //break; 9 case 3: 10 System.out.println("獎勵一頓美食"); 11 //break; 12 default: 13 System.out.println("做作業"); 14 }View Code
運行結果:
獎勵一部手機
獎勵一個IPad
獎勵一頓美食
做作業
“穿透式的結果”
循環結構(for循環):
– for(初始化語句;判斷條件語句;控制條件語句) {
循環體語句;
}
– 執行流程
a:執行初始化語句
b:執行判斷條件語句,看其結果是true還是false
– 如果是false,循環結束。
– 如果是true,繼續執行。
c:執行循環體語句
d:執行控制條件語句
e:回到B繼續
案例1:
1 for(int i = 0;i < 5;i++){ 2 System.out.println("我愛編程,更愛Java"); 3 }View Code
解析:該段代碼的含義是,初始化一個int型變量i,如果i < 5,就執行i++並打印出,我愛編程,更愛Java,直到不滿足條件循環體執行結束
運行結果:
我愛編程,更愛Java
我愛編程,更愛Java
我愛編程,更愛Java
我愛編程,更愛Java
我愛編程,更愛Java
值得註意的幾點:
for 關鍵字後面括號中的三個表達式必須用 “;” 隔開,三個表達式都可以省略,但 “;” 不能省略。
a. 省略“循環變量初始化”,可以在 for 語句之前由賦值語句進行變量初始化操作,如:
1 int i = 0;//變量i在for循環語句之前賦值 2 for(;i < 10;i++){//省略初始化變量 3 System.out.println("我愛編程,更愛Java"); 4 }View Code
b. 省略“循環條件”,可能會造成循環將一直執行下去,也就是我們常說的“死循環”現象,如
1 for(int i = 0;;i++){//省略循環條件 2 System.out.println("我愛編程,更愛Java"); 3 }View Code
註:對於死循環的情況,一般采取break方法強制結束循環
2、 for 循環變量初始化和循環變量變化部分,可以是使用 “,” 同時初始化或改變多個循環變量的值,如:
1 for(int i = 0,j = 5;i < 5;i++,j--){ 2 System.out.println(i+"+"+j+"="+(i+j)); 3 }View Code
運行結果:
0+5=5
1+4=5
2+3=5
3+2=5
4+1=5
3、 循環條件部分可以使用邏輯運算符組合的表達式,表示復雜判斷條件,但一定註意運算的優先級,如:
1 for(int i = 0;i < 10 && i !=5;i++){//省略循環條件 2 System.out.println(i); 3 }View Code
運行結果:0 1 2 3 4
這裏可能會有疑問,大家可以復習一下&&的語法哦,同時呢希望大家自己可以寫一些更復雜的表達式來加強自己的編程能力哦!
循環結構(while循環):
格式:
– 基本格式
while(判斷條件語句) {
循環體語句;
}
– 擴展格式
初始化語句;
while(判斷條件語句) {
循環體語句;
控制條件語句;
}
案例:
1 int i = 1; 2 while(i < 5){ 3 System.out.println("我愛編程,更愛Java"); 4 i++; 5 }View Code
解析:該段代碼的含義是,定義int型變量i並賦值1,進入條件語句,i < 5 並打印一次“我愛編程,更愛Java”,之後執行i++,依次循環下去直到I >= 5不能再次進入循環
運行結果:
我愛編程,更愛Java
我愛編程,更愛Java
我愛編程,更愛Java
我愛編程,更愛Java
循環結構(do…while循環):
格式:
– 基本格式
do {
循環體語句;
}while((判斷條件語句);
– 擴展格式
初始化語句;
do {
循環體語句;
控制條件語句;
} while((判斷條件語句);
案例:
1 int i = 1; 2 do{ 3 System.out.println("我愛編程,更愛Java"); 4 i++; 5 }while (i <= 5);View Code
循環結構(do…while循環):
格式: – 基本格式 do { 循環體語句; }while((判斷條件語句); – 擴展格式 初始化語句; do { 循環體語句; 控制條件語句; } while((判斷條件語句); 案例: int i = 1; 解析:先執行一遍循環操作,然後判斷循環條件是否成立,如果成立繼續執行循環,直到不滿足i<=5的判斷條件 運行結果: 我愛編程,更愛Java 我愛編程,更愛Java 我愛編程,更愛Java 我愛編程,更愛Java 我愛編程,更愛Java
|
三種循環的差別
雖然可以完成同樣的功能,但是還是有小區別:
– do…while循環至少會執行一次循環體。
– for循環和while循環只有在條件成立的時候才會去執行循環體
for循環語句和while循環語句的小區別:
– 使用區別:控制條件語句所控制的那個變量,在for循環結束後,就不能再被訪問到了,而while循環結束還可以繼續使用,如果你想繼續使用,就用while,否則推薦使用for。原因是for循環結束,該變量就從內存中消失,能夠提高內存的使用效率。
跳轉控制語句
* break 中斷:用於結束循環
案例:
1 for(int i = 0;i < 10;i++){ 2 if((i > 1)&&(i % 2 == 0)){ 3 break; 4 } 5 System.out.print(i+"\t"); 6 } 7 System.out.println("執行break之後,跳出循環,執行這句話");View Code
解析:使用循環輸出 0--9的數值,其中,如果數值大於 1 ,並且為 2 的倍數則停止輸出。
運行結果:0 1 執行break之後,跳出循環,執行這句話
*continue 繼續:結束一次循環繼續下一次循環
案例:
1 for(int i = 0;i < 10;i++){ 2 if(i % 2 != 0){ 3 continue; 4 } 5 System.out.print(i+"\t"); 6 }View Code
解析:打印 0--9 之間所有的偶數,通過continue結束本次循環,執行下一次循環:
運行結果:0 2 4 6 8
Java基礎之流程控制語句