Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
&;之间的区别是什么;及&;java中的if语句?_Java_Android - Fatal编程技术网

&;之间的区别是什么;及&;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()) {
    ...
}