逻辑运算符
java中的逻辑运算符主要包含如下 6 个:
&(逻辑与):
两边都是ture,结果才为true
System.out.println(true & true); //结果:true
System.out.println(true & false); //结果:false
System.out.println(false & true); //结果:false
System.out.println(false & false); //结果:false
|(逻辑或):
两边都是false,结果才为false
System.out.println(true | true); //结果:true
System.out.println(true | false); //结果:true
System.out.println(false | true); //结果:true
System.out.println(false | false); //结果:false
^(逻辑异或):
相同为false,不同为true
System.out.println(true ^ true); //结果:false
System.out.println(true ^ false); //结果:true
System.out.println(false ^ true); //结果:true
System.out.println(false ^ false); //结果:false
!(取反):取反
System.out.println(!true); //结果:false
System.out.println(!false); //结果:true
&&(短路与):
两边都为true结果就为true
int a = 10;
int b = 10;
System.out.println(a<5 && b>6); //结果:false
System.out.println(a>5 && b>6); //结果:true
||(短路或):
两边都为false结果就为false
int a = 10;
int b = 10;
System.out.println(a<5 || b>6); //结果:true
System.out.println(a>5 || b>6); //结果:true
System.out.println(a<9 || b<9); //结果:false
短路逻辑运算符的使用场景:
例如:
这段代码中只有当Teacher对象不为空并且对象中的age属性要大于25的时候才能进入方法,如果Teacher对象为空,那么将会决定整个判断条件的最终结果,此时用短路与能提高执行效率
面试题:&&与& ||与|有什么区别?
1. &与| 无论表达式左边是true还是false,右边都需要执行
2. && 与 || 具有短路效果,如果表达式的左边能确定整个表达式的结果,那么表达式的右边不会执行,提高了执行效率