“&”和“&&”的区别:
单&时,左边无论真假,右边都进行运算;
双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。(短路原理)。
“|”和“||”的区别同理,双或时,左边为真,右边不参与运算。
实例1,单个&
public static void main(String[] args) {
String str = null;
if(1>2 & str.equals("abc")){
System.out.println("aaaaaaaa");
}else{
System.out.println("bbbbbbbb");
}
}
结果:
str.equals("abc")参与了运算,因为str为null,所以会报空指针异常,当然如果写成"abc".equals(str)就能避免空指针异常了。

实例2,双&
public static void main(String[] args) {
String str = null;
if(1>2 && str.equals("abc")){//此处 str.equals("abc")没有执行
System.out.println("aaaaaaaa");
}else{
System.out.println("bbbbbbbb");
}
}
结果:

本文详细解析了Java中逻辑运算符“&”、“&&”、“|”、“||”的使用区别,通过具体实例展示了单个与双逻辑运算符在运算过程中的行为差异,特别是短路原理的应用。
602

被折叠的 条评论
为什么被折叠?



