Java中的自增/自减运算符的前缀/后缀
Java中的自增/自减运算符的前缀/后缀
从下面的程序或这里,为什么最后一次调用System.out.println(i)
会打印值7
?
class PrePostDemo { public static void main(String[] args) { int i = 3; i++; System.out.println(i); // "4" ++i; System.out.println(i); // "5" System.out.println(++i); // "6" System.out.println(i++); // "6" System.out.println(i); // "7" } }
admin 更改状态以发布 2023年5月24日
另一种阐释它的方式是:
++i
将给出 new i
的结果,i++
将给出原始 i
的结果并将 new i
存储以供下一次操作使用。
一种思考它的方式是,在表达式内做其他事情。当你打印 i
的当前值时,它取决于在表达式内部还是在表达式后 i
是否已被更改。
int i = 1; result i = ++i * 2 // result = 4, i = 2
在计算结果之前,评估(更改)i
。打印此表达式的 i
,显示用于此表达式的更改后的 i
值。
result i = i++ * 2 // result = 2, i = 2
在结果被计算后评估 i
。因此,从该表达式打印 i
将给出在表达式中使用的原始 i
值,但 i
仍会更改以供以后使用。因此,立即在表达式之后打印 i
的值,将显示 i
的新增值。因为无论打印或使用,i
的值都已经改变了。
result i = i++ * 2 // result = 2, i = 2 System.out.println(i); // 2
如果你保持一致的模式并为所有值包括打印行:
int i = 3; System.out.println(i); // 3 System.out.println(i++); // 3 System.out.println(i); // "4" System.out.println(++i); // 5 System.out.println(i); // "5" System.out.println(++i); // "6" System.out.println(i++); // "6" System.out.println(i); // "7"