4

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

4

2 回答 2

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 字节码指令列表页面上分析差异。简而言之,a = a + 1issues iload_1, iconst_1, iaddand istore_1, 而其他的只使用iinc.

来自@NPE:

流行的理念是 javac 故意选择不优化生成的代码,而是依靠 JIT 编译器在运行时进行优化。后者对执行环境(硬件架构等)以及代码在运行时的使用方式有更好的信息。

所以总而言之,除了不编译成相同的字节码之外,很有可能,它不会有什么不同。这只是一种风格选择。

于 2013-11-13T14:46:15.690 回答
2

它不是更有效,它只是看起来更干净的代码。

于 2013-11-13T14:43:28.067 回答