測試 java中&和&&表示邏輯“與”的運算符的區別:
try {
String str = null;
if( null != str & str.equals("")){
}
} catch (Exception e) {
System.out.println("輸出異常信息爲"+e.getMessage()+",則 if的條件 null != str & str.equals(\"\") & 兩邊的都會執行");
}
try {
String str = null;
if( null != str && str.equals("")){ //會輸出異常信息,即表明後面的str.equals("")也執行了
}else{
System.out.println("判斷正常,沒有執行 str.equals(\"\"),即&&具有短路功能");
}
} catch (Exception e) {
System.out.println("輸出異常信息"+e.getMessage());
}
console控制檯輸出如下:
輸出異常信息爲null,則 if的條件 null != str & str.equals("") & 兩邊的都會執行
判斷正常,沒有執行 str.equals(""),即&&具有短路功能
結論,可以看出 & 的時候,條件的兩邊都執行了,所以會拋出null指針的異常;而 && 執行到 null != str 的時候,判斷條件不匹配後,就直接就不執行 str.equals("")這個方法了,即表明 && 具有短路功能。