面试题: &,| 与&&,||的区别?
在开发中,经常会发现代码在进行逻辑判断的时候要么出现&&,要么出现||,几乎没有出现&和|这是为什么呢?通俗来讲,自然是哪个好用哪个,也就是哪个效率更好用哪个。
区别:
&&(短路与):&&如果表达式左边为false,结果肯定为false,也就是表达式右边不参与运算。(效率高)
&(与):&如果表达式左边为false,结果肯定为false,但是右边表达式参与了运算
||(短路或):||如果表达式左边为true,结果肯定为true,也就是表达式右边不参与运算。(效率高)
|(或):|如果表达式左边为true,结果肯定为true,但是右边表达式参与了运算
代码演示:
&&运算符
public class Test1 {
public static void main(String[] args) {
int a = 3;
int b = 4;
System.out.println((++a == 3)&&(++b == 4));// false && false =false
System.out.println("a="+a+",b="+b); // a=4,b=4 ,表达式右边没有进行运算
}
}
输出: a=4,b=4,表达式左边为false,则右边不参与运算,故b的值没有发生变化
而对于&,如下
public class Test1 {
public static void main(String[] args) {
int a = 3;
int b = 4;
System.out.println((++a == 3)&(++b == 4));// false & false =false
System.out.println("a="+a+",b="+b); // a=4,b=5 右边也进行了运算
}
}
输出: a=4,b=5, 显然两边都进行了运算
||运算符
public class Test1 {
public static void main(String[] args) {
int a = 3;
int b = 4;
System.out.println((++a == 4)||(++b == 4));// true || false =true
System.out.println("a="+a+",b="+b); // a=4,b=4 ,显然表达式右边没有进行运算
}
}
输出: a=4,b=4,表达式左边为true,结果一定为true,则右边不参与运算,故b的值没有发生变化
而对于|,如下
public class Test1 {
public static void main(String[] args) {
int a = 3;
int b = 4;
System.out.println((++a == 4)|(++b == 4));// true | false =true
System.out.println("a="+a+",b="+b); // a=4,b=5 右边也进行了运算
}
}
输出: a=4,b=5, 显然两边都进行了运算.

浙公网安备 33010602011771号