Java 是++;运算符比a=a+;1.
在Java中,增量运算符是否比简单的加法运算更高效?它不是更高效,它只是看起来更干净的代码。它编译成完全相同的字节码。这完全是个人喜好的问题 编辑: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
事实证明这是不正确的。
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快?