java核心技術 卷一 學習筆記(6) --------條件分支語句

1、if語句

第一種形式:

if(條件){
    語句1;
}

第二種形式:

if(條件){
    語句1;
}else{
    語句2;
}

 第三種形式:

if(條件1){
    語句1;
}else if(條件2){
    語句2;
}......
else if(條件n){
    語句n;
}else{
    語句n+1;
}

使用if語句時,要優先將範圍更小的條件放在前面,否則會出現邏輯錯誤。舉個經典的例子:

public class Branch {

    public static void main(String[] args) {
        int age = 40;  //輸出結果爲 青年人

        if(age >= 20){
            System.out.println("青年人");
        }else if(age >= 40){
            System.out.println("中年人");
        }else if (age >= 60){
            System.out.println("老年人");
        }

    }
}

按照我們預想的,應該是要輸出中年人。爲了避免這種問題,要優先將範圍更小的條件放在前面,然後else默認是對前面的條件取反。正確的語句如下:

public class Branch {
    public static void main(String[] args) {
        int age = 40;  //輸出結果爲  中年人

        if(age >= 60){
            System.out.println("老年人");
        }else if(age >= 40){
            System.out.println("中年人");
        }else if (age >= 20){
            System.out.println("青年人");
        }

    }
}

2、switch語句

switch語句由一個控制表達式和多個case標籤組成,並且switch語句後面的控制表達式的數據類型只能是byte、short、char、int、枚舉類型和java.lang.String(java1.7開始支持),不能爲boolean類型。

注意:要在每個case標籤的最後加上break語句,否則會產生邏輯錯誤。舉個例子:

public class Branch {
    public static void main(String[] args) {
        int age = 40;
        boolean a =true;

        switch (age){
            case  60:
                System.out.println("老年人");
            case  40:
                System.out.println("中年人");
            case  20:
                System.out.println("青年人");
            default:
                System.out.println("未知");
        }

    }
}

 輸出結果: 

 

這是因爲在switch語句中,它會拿條件一一去和case後面的條件匹配,一旦匹配成功,就會執行這個case標籤後面所有的屬於該switch的代碼,不會再去判斷後面的case和default標籤,只有遇到break纔會結束。所以當我們應該在每個case標籤裏面語句的最後一句加上break,由於default標籤部分已經到了switch語句的最末端,所以可以省去break。

如下:


public class Branch {
    public static void main(String[] args) {
        int age = 40;
        boolean a =true;

        switch (age){
            case  60:
                System.out.println("老年人");
                break;
            case  40:
                System.out.println("中年人");
                break;
            case  20:
                System.out.println("青年人");
                break;
            default:
                System.out.println("未知");
        }

    }
}


輸出結果:

 

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