在Java中,增量运算符比简单的加法运算更有效吗?
问问题
302 次
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 + 1
issues iload_1
, iconst_1
, iadd
and istore_1
, 而其他的只使用iinc
.
来自@NPE:
流行的理念是 javac 故意选择不优化生成的代码,而是依靠 JIT 编译器在运行时进行优化。后者对执行环境(硬件架构等)以及代码在运行时的使用方式有更好的信息。
所以总而言之,除了不编译成相同的字节码之外,很有可能,它不会有什么不同。这只是一种风格选择。
于 2013-11-13T14:46:15.690 回答
2
它不是更有效,它只是看起来更干净的代码。
于 2013-11-13T14:43:28.067 回答