int i = 0;
i += 1;
i = i + 1;
这两个选项有什么区别?性能时间方面有何变化?哪个最厉害?
最佳答案
+= 进行隐式转换。例如这将编译:
int i = 0;
i += 1L;
这不会:
int i = 0;
i = i + 1L;
尝试在 Windows 8 上使用 jdk1.8.0_11 编译这两个片段并查看字节码差异...
0: iconst_0
1: istore_1
2: iinc 1, 1
对于 i += 1
版本,并且:
0: iconst_0
1: istore_1
2: iload_1
3: iconst_1
4: iadd
5: istore_1
对于i = i + 1
版本。
所以结论是:您确实可能会获得不同的字节码(也可能不会,请参阅@TDG答案)和不同的性能,但与您的程序将具有的其他开销相比,差异是微不足道的。
关于java - 分析 i += 1 和 i = i + 1 之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36508069/