【发布时间】:2021-09-26 02:56:17
【问题描述】:
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吗?
【问题讨论】:
-
a=a++有 2 个步骤:1. 评估,2. 分配。++部分发生在评估期间,然后被赋值覆盖 -
请使用你的调试器!!!!单步执行代码。在每一步查看每个变量的值。我想你会看到很多你可能“没想到”的事情;)例如,
k=+1将分配值“+1”;) -
简短建议:仅在独立表达式中使用
++。例如,只做i++;,从不做i = i++;。 -
奥普斯。对不起我的错。 k+=1;而不是 k=+1;。我编辑了。
标签: java increment post-increment