1.之前一直认为++i的效率比i++的效率高。
其实是分场景的。
简单的理解i++和++i的区别:
i = 0;
a = i++,先运算,后赋值
b = ++i,先赋值,后运算a = 0;b = 1;
再近一步:
i++:Fetch i,copy i,increment i,return copy;
++i:Fetch i,increment i,return i;
i++要增加一个副本,是要多耗内存,效率要低一点,但是现在的电脑性能不会对程序运行有明显的影响。
最后有趣的是:
对于java是没有区别的 他们的byte code 是一样的 都是 iinc。对于C语言 是有效的。
bytecode 可以用javap -c classfile看。i=i+1, i++, ++1。 bytecode都是一样的。