++运算符比a = a + 1更有效吗?

时间:2013-11-13 14:42:03

标签: java increment

在Java中,增量运算符是否比简单的加法运算更有效?

2 个答案:

答案 0 :(得分:15)

它编译为完全相同的字节代码。这都是首选问题。

编辑
事实证明这是是真的。

public class SO_Test
{
    public static void main(String[] args)
    {
        int a = 1;
        a++;
        a += 1;
        ++a;    
    }
}

输出: enter image description here

示例:

public class SO_Test
{
    public static void main(String[] args)
    {
        int a = 1;
        a = a + 1;
        a++;
        a += 1;
        ++a;    
    }
}

输出: enter image description here

可以在Java bytecode instruction listings page上分析差异。简而言之,a = a + 1发布iload_1iconst_1iaddistore_1,而其他人只使用iinc

来自@NPE:

  

流行的哲学是javac故意选择不这样做   优化生成的代码,依靠JIT编译器来做到这一点   运行。后者有更好的执行信息   环境(硬件架构等)以及代码的方式   在运行时使用。

总而言之,除了没有编译到相同的字节代码之外,概率非常高,也没有什么区别。这只是一种风格选择。

答案 1 :(得分:2)

效率不高,只是代码更清晰。