当前位置: 代码迷 >> Java相关 >> java &和&&的区别,该如何解决
  详细解决方案

java &和&&的区别,该如何解决

热度:3751   发布时间:2013-02-25 21:51:42.0
java &和&&的区别
java &和&&的有什么特别的区别吗


------解决方案--------------------------------------------------------
&是位运算,即按位与运算
&&是逻辑运算符,表示逻辑与and
------解决方案--------------------------------------------------------
& 是按二进制的按位与,即 1 & 1 = 1 1 & 0 = 0 3 & 1 → 11(二进制) & 1 = 1


&& 是逻辑与,true & true = true, true & false = false
------解决方案--------------------------------------------------------
一个的是位运算符号,用的比较少,两个的是逻辑运算符号,用的比较多。
------解决方案--------------------------------------------------------
在你搞不清楚这两个差别的时候,你只需要的就是 && 运算符
------解决方案--------------------------------------------------------
& 位运算符 又称短路连接(有点忘记了~)
&& 逻辑运算符
------解决方案--------------------------------------------------------
&可以是位与运算符,也可以是逻辑与,在做逻辑与的时候有短路,也就是如果第一个条件不成立的话,第二个条件不再计算。
&&是逻辑与,2个条件都计算
------解决方案--------------------------------------------------------
Java里面 & 只代表按位与运算 。 && 才是逻辑与,并且在第一个条件已经为False的情况下,不会计算第二个条件
------解决方案--------------------------------------------------------
Java里面 & 只代表按位与运算 。 && 才是逻辑与,并且在第一个条件已经为False的情况下,不会计算第二个条件,也就是常说的短路操作符
------解决方案--------------------------------------------------------
&和&&有一个本质的区别
就如楼上所说
&&只要第一个条件是false,就不会去执行第2个条件
但&不管第一个条件是不是false,都会执行第2个条件
遇到这样的情况,结果就会不一样了
i=1;
j=1;
if(i++<0&j++){

}
log.info(j);
i=0;
j=1;
if(i++<0&&j++){

}
log.info(j);
------解决方案--------------------------------------------------------
if(i++ <0&j++){ 这样的代码中Java中根本编译通不过

因为Java里面 & 不是代表逻辑与,所以这里根本与所说的短路没有任何关系
------解决方案--------------------------------------------------------
ChDW说的对,&是按位与,i++<0&j++是错误的表达式
------解决方案--------------------------------------------------------
对,if(i++ <0&j++){ 这样的代码中Java中根本编译通不过 

将原来的程序里
if(i++ <0&j++)
改为
if(i++ <0&j++>0)
应该就通过了

我对上次没有将代码进行检验表示道歉。

请楼主用这个代码进行验证
i=1; 
j=1; 
if(i++ <0&j++>0){ 


System.out.println(j);
i=0; 
j=1; 
if(i++ <0&&j++>0){ 


System.out.println(j);
  相关解决方案