我知道这一点已经得到了回答,但我认为另一种解释可能会有所帮助。
另一种解释方法是:
++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 = 2System.out.println(i); // 2
如果您保持一致的模式,并包括所有值的打印行:int i = 3; System.out.println(i); // 3System.out.println(i++); // 3System.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"