java - 分析 i += 1 和 i = i + 1 之间的差异

标签 java

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/

相关文章:

JavaFX:如何禁用 TextArea 的多行选项

Java HTTP 请求缓冲区大小

java - java.util.GregorianCalendar 在 1976 年 3 月 28 日到 3 月 29 日之间发生了什么?

java - 端口转发 Devstack 尝试连接到本地 IP 而不是 Swift 中端口转发的 IP 地址

以编程方式重新启动 Java 应用程序命令

java - 鼠标拖动画线组滞后的原因

java - 带有枚举的 CodecConfigurationException

java - 在用户定义的 Java 双链表中添加和删除元素

java - elasticsearch使用resthighlevel客户端生成查询

java - 如何在firebase android中同时向一个节点的两个子节点写入数据?