我试过这个,找到了问题
public class Baz {
public static void main(String[] args) {
int num = 5;
for(int i=0 ;i < 4 ; i++) {
num = num++;
}
System.out.println("Value is :" + num);
}
}
结果打印值是5,会发生什么?
答案 0 :(得分:2)
num = num++;
与
相同num = num;
因为表达式num++
的数值是之前num
的值增加;因此虽然num++
具有递增num
的副作用,但它会立即被分配还原,
因此,num
的值保持不变。
答案 1 :(得分:2)
num = num++; // don't do this
num++
递增变量,但它首先计算当前值,然后由num =
分配给变量。递增的值只是被丢弃。
在其他语言(例如C)中,这甚至是未定义的行为。
答案 2 :(得分:0)
num ++与num = num +1
相同所以你应该这样做:
public class Baz {
public static void main(String[] args) {
int num = 5;
for(int i=0 ;i < 4 ; i++) {
num++;
}
System.out.println("Value is :" + num);
}
}
答案 3 :(得分:0)
num = num++
行没有意义。 num++
等于num = num + 1
因此您必须将代码更改为:
public class Baz {
public static void main(String[] args) {
int num = 5;
for(int i=0 ;i < 4 ; i++) {
num++;
}
System.out.println("Value is :" + num);
}
}