测试 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("")这个方法了,即表明 && 具有短路功能。