2016-11-25 108 views
-1
public class j68 { 
    public static void main(String args[]){ 
     System.out.print(1==2||true); 
    } 
} 


public class j68 { 
    public static void main(String args[]){ 
     System.out.print(1==2|true); 
    } 
} 

兩個以上的打印true.Does它意味着我們可以用|而不是|| ?邏輯或和按位或

回答

0

有和沒有,但大多數是沒有,有幾個原因。

|(位)和||(邏輯)之間有很大的區別:用按位|操作數一直被運用。 (我並不認爲首先評估哪一個;至少,我沒有立即看到JLS§15.22.2中的一個,但也許在其他地方有保證)。對邏輯||,評估左側操作數首先,如果左側結果爲假,則評估右側只有

,如果你正在做一些防禦性的,如這可關係:

boolean flag = obj == null || obj.flag; 

如果我們使用|代替||,當objnull這將失敗;我們會得到一個NullPointerException

另外,還有一個問題是其他人必須閱讀並使用您的代碼,並使用|,其中||通常使用會令人驚訝。但這是一個風格問題。