Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.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中调试和运行期间的不同结果_Java_Eclipse_Debugging_Short Circuiting - Fatal编程技术网

在Java中调试和运行期间的不同结果

在Java中调试和运行期间的不同结果,java,eclipse,debugging,short-circuiting,Java,Eclipse,Debugging,Short Circuiting,我写了这段代码来测试短路操作员 package com.MasterChief; public class ShortCircuitDebugTest { static boolean myBool = true; static int myInt = 1; public static void main(String[] args) { if (myBool || myFunc()){ // line 7: put break point here

我写了这段代码来测试短路操作员

package com.MasterChief;

public class ShortCircuitDebugTest {
    static boolean myBool = true;
    static int myInt = 1;
    public static void main(String[] args) {
        if (myBool || myFunc()){ // line 7: put break point here
            System.out.println("myInt = " + myInt);
        }
    }

    private static boolean myFunc(){
        myInt = 5;
        return !myBool;
    }
}
我在第7行放置了一个断点,并在表达式窗口中添加了myFunc。调试表达式期间,窗口应可见。结果是:

myInt = 5
如果我只是运行程序,或者没有在表达式窗口中添加myFunc,或者没有选择表达式窗口,我就不会得到这种行为。

这是Eclipse中的预期行为还是错误?

如果将表达式添加到表达式窗口,它将执行并更改全局变量
myBool
myInt
的值。如果您转到下一步,它将再次执行,因此您的代码将给出另一个结果。

这不是错误。由于
|
运算符从左到右计算表达式,
myBool
检查将返回true,并且不会调用
myFunc()
(由于整个条件始终为true,因此无需计算
myFunc()
结果)

由于您在“调试表达式”窗口中使用了
myFunc()
,因此将对其进行计算以显示结果,并将
myInt
更改为
5