我没有理解 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吗?
答案 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.");
}