java中&和&&的区别?

java中还有||和|符号的区别

(&,|)它们是逻辑操作,(&&,||)它们是条件操作。

&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑运算与(and).

|| 按位或运算符 ,表示按位或运算,||是逻辑或算符,表示逻辑或运算。

条件操作只能操作布尔型的,而逻辑操作不仅可以操作布尔型,而且可以操作数值型的。
不同点:
对于A&B,不管a是否为假,仍然要判断B。
对于A|B,不管a是否为真,仍然要判断B。
而对于A&&B,A||B在以上情况就不会去判断B了。
帮助别人就是帮助自己,希望大家一块进步。
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-07-01
java中的&&具有“短路”现象,也就是说,当&&左边的表达式为假时,就不再计算剩余的&&右边的值是否为真。而&则不同,就算&&左边的表达式是假,它还是会计算&右边的表达式。

而||和|也是一样道理的。

希望我的回答能给你点帮助。谢谢
第2个回答  2009-07-01
&有两种解释..一是按位与 另一个就是且(并且) &&只是并且的意思

下面说下&是且 时 和&&的关系..

if(a==b&b==c){
..
}
用&的话 程序会先判断a是否=b 如果不等于. 还要跳过判断b是否=c.

但如果
if(a==b&&b==c){
..
}
是这样的话..程序判断a!=b的话 直接后面的b是否=c就不做判断了..直接跳出.

明白了吧。所以&&叫做断位符...因为它使得少判断一句..提高了效率.!
第3个回答  2009-07-01
一般情况下编程只需要用&&就好了,比如
boolean a = true;
boolean b = false;
boolean c = a&&b;
那么b的值就是false;

而&是位操作符,例如:
int a = 2;
int b = 3;
2的二进制为10;3的二进制为11;
那么
int c = a&b;
c的值就为10&11=10,所以c等于2。
第4个回答  2012-12-13
&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算两边的表达式的结果都为true时,整个运算结果才为true。否则,只要有一方为false,则结果为false。
&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,例如,对于if(str!=null&&!str.equals(""))表达式,当str为null是,后面的表达式不会再执行,所以不会出现NullPointerException如果将&&改成&,则会抛出NullPointerException异常。If(x==3&++y>0) y会增长,if(x==3&&++y)不会增长。
&还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作,我们通常使用0x0f来与一个整数进行&运算,来获取该整数的最低位4个bite位,例如,0x31&0x0f的结果为0x01。
相似回答