Java 短路運算符和非短路運算符

短路運算符就是我們常用的“&&”、“||”,一般稱爲“條件操作”。

class Logic{
    public ststic void main(String[] args){
        int a=1;
        int b=1;
        if(a<b && b<a/0){
            System.out.println("Oh,That's Impossible!!!");
        }else{
            System.out.println("That's in my control.");
        }
    }
}

    “&&”運算符檢查第一個表達式是否返回“false”,如果是“false”則結果必爲“false”,不再檢查其他內容。
“a/0”是個明顯的錯誤!但短路運算“&&”先判斷“a<b”,返回“false”,遂造成短路,也就不進行“a/0”操作了,程序會打出"That's in my control."。這個時候,交換一下“&&”左右兩邊的表達式,程序立即拋出異常“java.lang.ArithmeticException: / by zero”。

class Logic{
    public ststic void main(String[] args){
        int a=1;
        int b=1;
        if(a==b || b<a/0){
            System.out.println("That's in my control.");
        }else{
            System.out.println("Oh,That's Impossible!!!");
        }
    }
}


    “||”運算符檢查第一個表達式是否返回“true”,如果是“true”則結果必爲“true”,不再檢查其他內容。
“a/0”是個明顯的錯誤!但短路運算“||”先執行“a==b”判斷,返回“true”,遂造成短路,也就不進行“a/0”操作了,程序會打出"That's in my control."。這個時候,交換一下“||”左右兩邊的表達式,程序立即拋出異常“java.lang.ArithmeticException: / by zero”。


非短路運算符包括 “& 與”、“| 或”、“^ 異或”,一般稱爲“邏輯操作”

class Logic{
    public ststic void main(String[] args){
        int a=1;
        int b=1;
        if(a<b & b<a/0){
            System.out.println("Oh,That's Impossible!!!");
        }else{
            System.out.println("That's in my control.");
        }
    }
}


    “&”運算符不會造成短路,它會認認真真的檢查每一個表達式,雖然“a<b”已經返回“flase”了,它還是會繼續檢查其他內容,以至於最終拋出異常“java.lang.ArithmeticException: / by zero”。
    
class Logic{
    public ststic void main(String[] args){
        int a=1;
        int b=1;
        if(a==b | b<a/0){
            System.out.println("That's in my control.");
        }else{
            System.out.println("Oh,That's Impossible!!!");
        }
    }
}

    同理,“|”運算符也不會造成短路,雖然“a==b”已經返回“true”了,它還是會繼續檢查其他內容,以至於最終拋出異常“java.lang.ArithmeticException: / by zero”。

    “^”運算符道理是一樣的,就不在這裏羅索了。

    最後。短路運算符只能用於邏輯表達式內,非短路運算符可用於位表達式和邏輯表達式內。也可以說:短路運算只能操作布爾型的,而非短路運算不僅可以操作布爾型,而且可以操作數值型。


(請注意!引用、轉貼本文應註明原作者:Rosen Jiang 以及出處:http://blog.csdn.net/rosen

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