第一階段——javaSE——02.java控制流程

本文鏈接:https://blog.csdn.net/qq_41338341/article/details/81107840
 流程控制思維導圖

一、順序結構

如果沒有流程控制(即沒有分支結構和循環結構),Java方法裏面的語句是一個順序執行流,從上到下依次執行每條語句。

二、分支結構

1.if語句

if語句使用布爾表達式或者布爾值作爲分支條件來進行分支控制。有如下三種形式:

(1)第一種形式

if(布爾表達式或者布爾值){
    語句...
}

(2)第二種形式

if(布爾表達式或者布爾值){
    語句...
}else{
    語句...
}


(3)第三種形式

if(布爾表達式或者布爾值){
    語句...
}
else if(布爾表達式或者布爾值){
    語句...
}
...//可以有零個或者多個else if語句
else//最後的else語句也可以省略
{
    語句...
}


注意:

  • if之後括號裏的表達式的返回值只能是true或者false,不能是1或者0。
  • 當使用if...else語句進行流程控制時,一定不要忽略else的隱含條件,else的隱含條件是對前面的條件取反。
  • 使用if...else語句時,一定要先處理包含範圍更小的情況。

//下面是一個容易出現的邏輯錯誤

public class demo{
    public static void main(String[] args){
        int age  = 45;
        if(age > 20){
            System.out.println("青年人");
        }else if(age > 40){
            System.out.println("中年人");
        }else if(age > 60){
            System.out.println("老年人");
        }
        //程序永遠不會輸出中年人和老年人
    }
}


如例子中的age>60和age>20兩個條件,明顯age>60的範圍更小,所以應該優先處理age>60的情況。

  • if、esle、else if後的條件執行體要麼是一個花括號括起來的代碼塊,要麼是以分號爲結束符的一行語句,甚至可能是一個空語句。如果省略了if條件後條件執行體的花括號,那麼if條件只控制到緊跟該條件語句的第一個分號處。

下面給出一個省略花括號導致編譯出錯的例子:

int c = 5;
if(c > 4)
    c--;
    //下面是一行普通代碼,不屬於執行體
    System.out.println("c大於4");
//此處的else將沒有if語句,因此編譯出錯
esle
    System.out.println("c不大於4");


2.switch語句

(1)switch的語法格式如下:

switch (expression){
//可以省略case後代碼塊的花括號
    case condition1:
    {
        statement(s)
        break;
    }
    case condition2:
    {
        statement(s)
        break;
    }
    ...
    case conditionN:
    {
        statement(s)
        break;
    }
    default:
    {
        statement(s)
    }
}


注意:

  • switch語句後面的控制表達式的數據類型只能是byte、short、char、int四種整數類型、枚舉類型和java.lang.String類型(Java7才允許),不能是StringBuffer或者StringBuilder這兩種字符串類型,也不能是boolean類型。
  • switch語句會先求出expression表達式的值,然後拿這個表達式和case標籤後的值進行比較,一旦遇到相等的值,程序就開始執行這個case標籤後的代碼,不再判斷與後面case、default標籤的條件是否匹配,除非遇到break纔會結束,所以注意不要忽略case後代碼塊的break。


三、循環結構

一般循環語句可能包含4個部分:初始化語句(init_statement)、循環條件(test_expression)、循環體(body_statement)、迭代語句(iteration_statement)[循環體如果只有一行語句,可以省略花括號]

三種循環結構之間可以相互嵌套。

1.while循環語句

語法格式如下:

[init_statement]
while(test_expression){
    statement;
    [iteration_statement]
}


 

 注意:如果省略了循環體的花括號,那麼while循環條件只控制到緊跟該循環條件語句的第一個分號處。

2.do while 循環語句

語法格式如下:

[init_statement]
do{
    //與while不同的是,while循環的循環體可能得不到執行,但do while的循環體至少執行一次
    statement;
    [iteration_statement]
}while(test_expression);//這裏一定要有分號,表明循環結束


3.for循環

基本語法格式如下:

for( [init_statement] ; [test_expression] ; [iteration_statement] ){
    statement;
}


//如果循環體只有一行語句,那麼循環體的花括號可以省略
程序執行for循環時,最先執行初始化語句init_statement(初始化語句只在循環開始前執行一次),然後判斷循環條件test_expression,如果得到true,則執行循環體(每次執行循環體之前都會先進行循環條件判斷),循環體執行結束後執行迭代語句。

注意:

  • for循環如果需要在初始化表達式中聲明多個變量,那麼這些變量應該具有相同的數據類型。
  • for循環圓括號中只有兩個分號是必需的,初始化語句、循環條件、迭代語句部分都是可以省略的。如果省略了循環條件,則這個循環條件默認爲true。
  • 建議不要在循環體內修改循環變量(也叫循環計數器)的值,否則會增加程序出錯的可能性。萬一程序真的需要訪問,修改循環變量的值,建議重新定義一個臨時變量,先將循環變量的值賦給臨時變量,然後對臨時變量的值進行修改。
  • 把for循環的初始化語句放在循環之前定義有一個作用:可以擴大初始化語句中所定義變量的作用域。


4.foreach循環

在Java數組裏面再詳細講述其用法。

5.控制循環結構

break:用於完全結束break語句所在循環,跳出當前循環體。

break還可以用於直接結束其外層循環,此時需要藉助標籤。Java的標籤就是一個緊跟着英文冒號(:)的標識符。與其他語言不同的是,Java中的標籤只有放在循環語句之前纔有作用。例如下面代碼:

public class Demo1 {
    public static void main(String[] args) {
        //外層循環,outer作爲標識符
        outer:
            for(int i = 0;i < 5;i++) {
                //內層循環
                for(int j = 0;j < 3;j++) {
                    System.out.println("i="+i+"  j="+j);
                    if(j == 1) {
                        //跳出outer標籤所標識的循環
                        break outer;
                    }
                }
            }
    }
 
}


第11行的break outer;語句將會導致結束outer標籤指定的循環,而不是break所在的循環。注意:break後的標籤必須是一個有效的標籤,即應該把標籤放在break語句所在循環的外層循環之前定義。當然,也可以把標籤放在break語句所在循環之前定義,只是這樣就失去了標籤的意義,因爲break默認就是結束其所在的循環。

continue:用於忽略本次循環剩下的語句,接着開始下一次的循環,並不會終止循環。

與break類似,continue後也可以緊跟一個標籤,用於直接跳過標籤所標識循環的當次循環的剩下語句,重新開始下一次循環。這個標籤通常應該放在continue所在循環的外層循環之前定義。

return:直接結束整個方法,從而結束循環。


————————————————
版權聲明:本文爲CSDN博主「小谷圍最靚的仔」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_41338341/article/details/81107840

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章