在Java中,增量运算符是否比简单的加法运算更有效?
答案 0 :(得分:15)
它编译为完全相同的字节代码。这都是首选问题。
编辑:
事实证明这是不是真的。
public class SO_Test
{
public static void main(String[] args)
{
int a = 1;
a++;
a += 1;
++a;
}
}
输出:
示例:
public class SO_Test
{
public static void main(String[] args)
{
int a = 1;
a = a + 1;
a++;
a += 1;
++a;
}
}
输出:
可以在Java bytecode instruction listings page上分析差异。简而言之,a = a + 1
发布iload_1
,iconst_1
,iadd
和istore_1
,而其他人只使用iinc
。
来自@NPE:
流行的哲学是javac故意选择不这样做 优化生成的代码,依靠JIT编译器来做到这一点 运行。后者有更好的执行信息 环境(硬件架构等)以及代码的方式 在运行时使用。
总而言之,除了没有编译到相同的字节代码之外,概率非常高,也没有什么区别。这只是一种风格选择。
答案 1 :(得分:2)
效率不高,只是代码更清晰。