Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.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:逻辑AND/OR和短路AND/OR之间有什么区别?_Java_Conditional_Statements - Fatal编程技术网

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计算为布尔值。然后,如果按位&布尔值与另一个布尔值一起计算,则将得到布尔值结果。因此,在这种情况下,将得到相同的输出。但是逻辑计算可能会短路,而按位表达式则不能。