为什么变量 i 在 i=i++ 之后没有改变?

Why does variable i not change after i=i++?

我不明白 LinkedIn 的 Java 评估测试中的以下问题:

for(int k =0; k<10; k=k++) {
   k+=1;
   System.out.println("Hello world.");
}

为什么这段代码会打印 10 次“Hello world”?

我知道 k++ 的意思是,先做作业(计算、赋值等)然后递增 k。所以我认为对于k=k++,k必须在赋值后递增:

k=k;
k=k+1; 

最后,我希望得到 k=k+1。

例如下面的代码打印 j=0 和 j=1:

int j=0;
System.out.println("j=" + j++);
System.out.println("j=" + j);

尊敬的java专家,您能解释一下为什么k=k++不改变k吗?

Why does this code print 10 times "Hello world."?

不,这将是一个无限循环,因为以下语句将 k 的值重置为 1:

k=+1;

此外,k=k++ 不会更改 k 的值,因为它的处理方式类似于

int temp = k;
k++;
k = temp;

你可以试试下面的代码来验证一下:

int k = 1;
k = k++;
System.out.println(k); // Will print 1

应该去k+=1

for(int k =0; k<10; k=k++) {
   k+=1;
   System.out.println("Hello world.");
}

如果你想得到 k=0 => k=2

  for(int k =0; k<10; k=k+2) {
       System.out.println("Hello world.");
    }