【发布时间】:2016-08-24 13:27:45
【问题描述】:
当我运行一个简单的程序时,它们( & 和 && )似乎可以互换工作。有人可以解释一下我应该何时使用每种情况吗?
public class Test1 {
public static void main(String [] args){
int counter = 0;
int dice1;
int dice2;
for (int loop = 0; loop <= 1000; loop++) {
dice1= (int) (Math.random()*6)+1;
dice2= (int) (Math.random()*6)+1;
if (dice1 == 6 && dice2 == 6){
counter ++;
}
}
System.out.println("Counter = " + counter);
}
}
当我使用 & 而不是 && 时,这个程序似乎也可以工作。那么有什么区别呢?
【问题讨论】:
-
我在您的代码中没有看到任何
||或|的用法。你能分享你的实际代码吗? -
我的意思是 & 和 &&,我的错
-
你知道其中一个短路了。你明白那是什么意思吗?如果您的测试是
test != null && test.equals("foo")怎么办?测试一下。 -
@JBNizet 指出的问题有一个不正确的公认答案。由于我无法再回答这个问题,我无法完全解释其中的区别。可以说单个 & 运算符是按位的,而 && 是逻辑与。此外,
if语句仅评估布尔运算。 if 的每个部分都计算为布尔值。然后,如果你按位 & 一个布尔值和另一个布尔值,你将得到一个布尔结果。因此,在这种情况下,您将获得相同的输出。但是逻辑计算可以短路,而按位表达式不能。
标签: java conditional statements