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

时间:2021-07-17 19:22:05

标签: java increment post-increment

我没有理解 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吗?

2 个答案:

答案 0 :(得分:2)

<块引用>

为什么这段代码会打印 10 次“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

答案 1 :(得分:-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.");
    }