Java 是++;运算符比a=a+;1.

Java 是++;运算符比a=a+;1.,java,increment,Java,Increment,在Java中,增量运算符是否比简单的加法运算更高效?它不是更高效,它只是看起来更干净的代码。它编译成完全相同的字节码。这完全是个人喜好的问题 编辑:事实证明这是不正确的。 public class SO_Test { public static void main(String[] args) { int a = 1; a++; a += 1; ++a; } } 输出: 例如: public cl

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

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

它编译成完全相同的字节码。这完全是个人喜好的问题

编辑
事实证明这是正确的。

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;    
    }
}
输出:

这些差异可以在计算机上进行分析。简而言之,
a=a+1
发布
iload\u 1
iconst\u 1
iadd
istore\u 1
,而其他的只使用
iinc

来自@NPE:

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


因此,总而言之,除了编译成相同的字节码之外,极有可能编译成相同的字节码,这不会有什么区别。这只是一种风格上的选择。

你能提供一个来源吗?增量后还是增量前?问题应该从什么开始,而不是从为什么效率更高开始?你提出了哪种基准标准来支持这一说法?@EelLee我已经改变了这一点,什么时候这将成为任何真正程序的瓶颈?你能提供一个来源吗?这是需要的答案。一个显示字节码生成的小示例,因此实际上有一些东西需要证明,我们都在这里完成了。现在,另一方面,
++A
,当你在做时,你应该包括
A+=1
,这在某些情况下略有不同。@Slanec你能解释一下这一点吗,因为+1有一些额外的指令,这是否意味着在非常微观的层面上++比+1快?