根据Oracle官方给出的文档Postfix Increment Operator ++,假如i=10, 那么i++的行为是:
下述程序表达了这一过程:
int i = 10; System.out.println(i ++); // 输出10
根据文档Prefix Increment Operator ++, 假如i=10, 那么++i的行为是:
下述程序表达了这一过程:
int i = 10; System.out.println(++ i);
答案很简单:
第一点很容易理解。
第二点的原因则在于:如果选用后缀++, 那么表达式将返回变量的旧值,那么这一瞬间,内存将同时记录(保存)旧值和新值两个变量,其中旧值是返回后就不被使用的临时变量。但这个临时变量是不必要的,亦即“拷贝旧值的动作”以及“占用的内存”都是不必要的。
所以我说,在不关心表达式的返回值时,优先用前缀++, 以避免不必要的拷贝和内存浪费。(在我问过的人里,只有一个本科室友能回答出这个区别我会乱说?)
for (int i = 1; i <= 10; ++ i) { // 所以我的for循环习惯用++ i, 而不是i ++, 因为我们在第三个子句,进行i的自增操作时,并不关心这个自增表达式的返回值 }
可以参考[Java] 作业1(基本程序设计)答疑中的"Q27“, 这题考察了++的用法。