JAVA:逻辑AND/OR和短路AND/OR之间有什么区别?
当我运行一个简单的程序时,它们(和&&&)似乎可以互换工作。有人能解释一下我应该什么时候使用每个箱子吗JAVA:逻辑AND/OR和短路AND/OR之间有什么区别?,java,conditional,statements,Java,Conditional,Statements,当我运行一个简单的程序时,它们(和&&&)似乎可以互换工作。有人能解释一下我应该什么时候使用每个箱子吗 public class Test1 { public static void main(String [] args){ int counter = 0; int dice1; int dice2; for (int loop = 0; loop <= 1000; loop++) { dice1=
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);
}
}
公共类Test1{
公共静态void main(字符串[]args){
int计数器=0;
int-1;
int-2;
对于(int-loop=0;loop而言,主要区别在于&&
和|
运算符执行某种“惰性求值”
在这一行代码中:
method1() & method2();
method1() && method2();
这两种方法的调用与method1
的返回值无关。另一方面,在这一行代码中:
method1() & method2();
method1() && method2();
只有当method1
返回true
时,才会调用method2
使用|
时,仅当第一个方法返回false
时,才会调用第二个方法
我在你的代码中没有看到任何|
或|
的用法。你能分享一下你的实际代码吗?我的意思是&和&&&,我的朋友,你知道其中一个短路。你明白这意味着什么吗?如果你的测试是测试!=null&&test.equals(“foo”)怎么办
?测试一下。@jbniset指出的问题有一个不正确的公认答案。由于我不能再回答这个问题,我无法完全解释差异。只需说一个&运算符是按位的,其中&&是逻辑and。另外,if
语句只计算布尔运算。函数的每个部分if计算为布尔值。然后,如果按位&布尔值与另一个布尔值一起计算,则将得到布尔值结果。因此,在这种情况下,将得到相同的输出。但是逻辑计算可能会短路,而按位表达式则不能。