JAVA,循环的奇怪结果

JAVA,循环的奇怪结果,java,Java,我有一个简单的问题。为什么这个循环的结果是12?我以为会是11点 public static void main(String[] args) { int i = 10; while (i++ <= 10){ } System.out.println(i); } //RESULT: 12 publicstaticvoidmain(字符串[]args){ int i=10; while(i++它将运行while循环中的条件两次,第一次当i=10时,它

我有一个简单的问题。为什么这个循环的结果是12?我以为会是11点

public static void main(String[] args) {
    int i = 10;

    while (i++ <= 10){
    }

    System.out.println(i);
}


//RESULT: 12
publicstaticvoidmain(字符串[]args){
int i=10;

while(i++它将运行while循环中的条件两次,第一次当
i=10时,
它将把它增加到11。然后它将检查
i是否发生这种情况,因为它必须在退出循环之前进行另一次检查

i is 10
check i++<=10?
i is 11
check i++<10?
exit
i is 12
i是10
检查i++
i++
是否显示“给我
i
的当前值,然后递增”。在这种情况下,当
i=10
增加到
11
时,表达式对上一个值
10
为真,因此循环重复,对
i=11
进行测试,将
i
增加到
12
,此时表达式为假,停止循环

i is 10
check i++<=10?
i is 11
check i++<10?
exit
i is 12
这种增量后行为有点令人困惑,因此只有当它正是您需要的时候才应该使用。一般来说,最好假装
++
不返回任何内容,这通常会使代码的意图更加清楚:

while(i <= 10) {
    i++;
}
while(i)