在java中我們把控制語句分為三大類:控制選擇結構語句、控制迴圈結構語句以及控制改變語句。那麼他們的執行流程又是怎麼樣的呢?
工具/原料
eclipse
jdk
控制選擇結構語句
控制選擇結構語句包含流程控制語句if和if....else以及switch.對應的語句的語法通常為:
if結構語句:
if(boolean表示式){
執行語句;}
if....else結構語句:
if(boolean表示式){
執行語句;}
else{
另一執行語句; }
參考例圖執行結果我們,可以知道在if語句中,滿足才會執行,否則什麼都不做。而在if....else語句中,必然會有結果執行,原因是因為else{}表示的就是除if外的其他任何存在可能,所以必有執行。
if和if....else,在單一的基礎上也可以混合多個if迴圈,例如下面語句:
if結構語句混合多個if(或者else if):
if(boolean表示式){
執行語句;}
if(boolean表示式){
執行語句;}
if(boolean表示式){
執行語句;}
if....else結構語句混合多個if(或者else if)
if(boolean表示式){
執行語句;}
else if(boolean表示式){
執行語句;}
else if(boolean表示式){
執行語句;}
else{
執行語句;}
if執行流程問題,在if語句執行流程中我們需要進行簡單的兩種理解
第一類:獨立if語句
if{執行語句;}
if{執行語句;}
if{執行語句;}
第二類:巢狀if語句
if{執行語句;}
else if{執行語句;}
else if{執行語句;}
在獨立的if語句中,它的執行流程是每個if都會進行判斷,巢狀if語句執行流程為滿足一個條件後就會跳出整個if結構。具體參考下圖。
switch語句,一下為標準switch語句結構,
switch(引數型別)
case 引數型別 : 執行語句;break;
...
case 引數型別 : 執行語句;break;
default : 執行語句;break;
一般情況default的break我們都省略了,因為default是放在最後的。
此外case也可以合併,例如:
case 引數型別 :
case 引數型別 :
執行語句;break;
引數值型別必須是這幾種型別之一:int,byte,char,short。你可以通過反編譯檢視你的原始碼,你會發現jvm類switch(int型別) 。由於 byte,char,short會自動轉換為int型別所以我們可以使用byte,char,short型別。
其次,說說switch的執行流程,首先先執行case匹配的語句,如果執行語句後面有break,那麼就跳出Switch語句結構,如果沒有break,那麼他將向下繼續執行,直到遇到break或者執行到介素。具體參考下面這個例子。
控制迴圈結構語句
控制迴圈結構語句包含流程控制語句for和while以及do....whlie.對應的for語句的語法通常為:
for(表示式1;表示式2;表示式3){
執行語句;
}
首先我們說說引數問題,表示式1我們稱作為初始表示式,也就是最先執行。表示式2為boolean表示式。
例如我們的的一個例項;
for(int i=1;i<3;i++){
執行語句;
}
然後說說for執行流程,for迴圈中首先執行表示式1:初始化i的值int i=1;然後執行表示式2,進行判斷,如果為假就跳出for(結束for迴圈),如果為真執行執行語句,然後執行表示式3,然後繼續執行表示式2,再次判斷,真執行執行語句,然後接著執行表示式3;否則就結束迴圈
下面給一個例子,給大家參考。
while語句的語法通常為
while(boolean表示式){
執行語句;
}
whlie迴圈和for迴圈類似的,相比較於for迴圈,while 迴圈我們可以這樣理解,表示式1在while之前,表示式2為while的boolean表示式,然後表示式三通常在while內;例如
int i=3;
while(i<5){
執行語句;
i++;
}
值得注意的是while 容易造成死迴圈,所以一定要當心,想對於while迴圈,do while迴圈 首先執行do裡面的語句,再去做while迴圈。
例如:
do{
執行語句1;
}while(boolean表示式);
do是必然執行的,且最先執行,然後再執行whlie迴圈。
可以參考下圖:
控制改變語句
控制改變語句主要由兩大類continue和break;在switch內我們已經接觸到過break;語句了,就是跳出整個迴圈,而continue;則是跳出這次迴圈,繼續接下來的。舉個例子給大家看看;如果一個for那麼下面輸出的結果是一致的。
for (int i = 0; i < 3; i++) {
if (i == 1) {
System.out.println("break: " + i);
}
System.out.println("break: " + i);
}
和
for (int i = 0; i < 3; i++) {
if (i == 1) {
System.out.println("continue: " + i);
}
System.out.println("continue: " + i);
}
注意事項
謝謝閱讀!