Java Can';我不明白为什么会打印出来

Java Can';我不明白为什么会打印出来,java,if-statement,for-loop,Java,If Statement,For Loop,遇到此代码并试图解决它。。。但我不太明白为什么会打印出63 public static void main(String[]args) { int x = 0; int y = 0; for(int z= 0; z < 5; z++) { if ((++x > 2)&&(++y > 2)) { x++; } } System.out.pri

遇到此代码并试图解决它。。。但我不太明白为什么会打印出63

public static void main(String[]args)
{
    int x = 0;
    int y = 0;
    for(int z= 0; z < 5; z++)
    {
        if ((++x > 2)&&(++y > 2))
        {
            x++;  
        }
    }
    System.out.println(x+""+y);
}
publicstaticvoidmain(字符串[]args)
{
int x=0;
int y=0;
对于(intz=0;z<5;z++)
{
如果((++x>2)和(++y>2))
{
x++;
}
}
System.out.println(x+“”+y);
}

首先,++x表示x被添加为1,然后读取if语句中的检查。第一次检查时,x是1

但是Java中还有另一件事,如果您检查两条语句,就像您在下面所做的那样:

if ((++x > 2)&&(++y > 2))
如果第一次检查失败,则第二次检查不会执行

我在控制台中编写了输出,对于所有for循环,都有------

x: 0 y: 0 z: 0 if: (false && (not executed) ) x: 1 ----- x: 1 y: 0 z: 1 if: (false && (not executed) ) x: 2 ----- x: 2 y: 0 z: 2 if: (true && false) x: 3 y: 1 ----- x: 3 y: 1 z: 3 if: (true && false) x: 4 y: 2 ----- x: 4 y: 2 z: 4 if: (true && true) x: 5 y: 3 x: 6 ----- 63 x:0 y:0 z:0 如果:(假&&(未执行)) x:1 ----- x:1 y:0 z:1 如果:(假&&(未执行)) x:2 ----- x:2 y:0 z:2 if:(true&&false) x:3 y:1 ----- x:3 y:1 z:3 if:(true&&false) x:4 y:2 ----- x:4 y:2 z:4 if:(true&&true) x:5 y:3 x:6 ----- 63
使用调试器逐步完成它。这就是他们的目的。谷歌后缀和前缀增量操作符…还有,“短路评估”在这里发挥作用。它应该打印42!