&;之间的区别是什么;及&;java中的if语句?
可能重复:&;之间的区别是什么;及&;java中的if语句?,java,android,Java,Android,可能重复: 为什么?在第一种情况下,不测试if的第二部分:&&操作符从左到右执行,并在第一个false值处停止 在这种情况下,这可能很有用: if (a!=null && a.doSomething()==23) { 因为它可以防止nullPointerException 测试布尔条件时,始终使用&&&是 &&逻辑上在&statement中,它将检查左侧和右侧语句。在&>中,它将只检查语句的一侧(如果一侧为true,则不会检查另一侧)请参阅: 这取决于参数的类型 对于
为什么?在第一种情况下,不测试if的第二部分:
&&
操作符从左到右执行,并在第一个false
值处停止
在这种情况下,这可能很有用:
if (a!=null && a.doSomething()==23) {
因为它可以防止nullPointerException
测试布尔条件时,始终使用&&
&
是
&&
逻辑上在&statement中,它将检查左侧和右侧语句。在&>中,它将只检查语句的一侧(如果一侧为true,则不会检查另一侧)请参阅:
这取决于参数的类型
对于整数参数,单符号与(&)是“按位与”
操作人员双符号(&&)没有定义为除
两个布尔参数
对于布尔参数,单个与符号构成
(无条件)“逻辑AND”运算符,而双安培和
(&&)是“条件逻辑AND”运算符。也就是说
单个与符号总是计算两个参数,而
如果第一个参数
这个论点是正确的
对于所有其他参数类型和组合,编译时错误
应该发生
&&逻辑和逻辑是一致的吗
所以你要确保这两种说法都是真的
&是按位AND运算符
请看这里:
&
短路,而&
不短路。例如:
if (methodA() && methodB()) {
...
}
在这种情况下,如果methodA
已经返回false,则不会调用methodB
。形式上,如果您有一个表达式a和
,b
仅在a
计算为true
时才进行计算
除了明显的性能优势外,这对于null
检查特别有用:
if (x != null && x.getSomeValue()) {
...
}
如果您在此处使用了一个s single&
,x.getSomeValue()
将被计算,即使x
为null
,也会导致异常。&&是逻辑且正确的。
真&真是真,其他一切都是假的。
&是按位和。
(10&8)=8
&
是逻辑运算符,而&
是位运算符。请查看。和你的问题一样。看看这个问题和去年的答案。
if (x != null && x.getSomeValue()) {
...
}