您的位置:首页 > 编程语言 > Java开发

Java中&与&&;|与||的区别

2016-02-19 10:11 288 查看


&,|是位运算符:
a&b是把a和b都转换成二进制数然后再进行按位与的运算;
a|b是把a和b都转换成二进制数然后再进行按位或的运算;
&&,||是逻辑运算符,短路运算
&&:当左表达式为false时,整体不可能为true,右表达式将不再运算;
||: 当左表达式为true时,整体为true,右表达式将不再运算;
也就是说在有些情况下左表达式会将右表达式“短路”。

int a = 0;
int b = 1;
if(++a>1&&--b==0){
System.out.println("结论错误");
}
System.out.println("a:" + a + ";b:" + b);//a:1;b:1 右表达式--b==0没有运算
int c = 0;
int d = 1;
if(++c>0||--d==0){
System.out.println("c:" + c + ";d:" + d);//c:1;d:1 右表达式--d==0没有运算
}

这种方式可以避免一些错误的发生
System.out.println(1!=1&&1/0==1);

System.out.println(1==1||1/0==1

上面的语句在执行时没有报错,说明后面的除0语句没有执行。
而& , | 在得到结果之前必须计算左右表达式的值。
总结:
1.& , | 为位运算符,在得到结果之前左右表达式都要进行计算;
2.&& , ||为逻辑运算符,可以减少计算量,可以避免错误的发生
2.1&&:当左表达式为false时,整体不可能为true,右表达式将不再运算;
2.2||: 当左表达式为true时,整体为true,右表达式将不再运算。


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: