未分類 17 7 月 2020 效率问题 对于 Java 来说 前自增(++i) 和 后自增(i++) 有区别么? 效率问题 对于 Java 来说 前自增(++i) 和 后自增(i++) 有区别么? 資深大佬 : silverwings 7 在 C++里(++C 大佬有話說 (11) 資深大佬 : lxilu 看看字节码 資深大佬 : hqweay Java 的话,编译期优化了。Java 编程思想 有提。 資深大佬 : newtype0092 以前习惯 for 循环里最后一定要++i 不能 i++,现在一边是编译器解释器不断优化,一边是机器性能不断攀升,这种微观细节处的效率优化基本没什么大用了,所以关心的人少了。 資深大佬 : sunny352787 这种细节编译期都优化的很好了,即便没优化这里也不会是瓶颈,也就学术上有点意义 資深大佬 : Jooooooooo 没区别 对 C++ 里有这种区别存疑, 这都哪一年了, 谁写的编译器啊 資深大佬 : lxk11153 需要先创建临时对象?怎么个创建法? 資深大佬 : msg7086 C++里没区别。你又不是活在 30 年前。 資深大佬 : jackrelative ++i 性能好些。会减少一个临时变量存储中间值。参考书本:java151 问 資深大佬 : aureole999 openjdk 14 java 8不影响逻辑的情况下++i 和 i++编译的字节码完全一致。Intellij 反编译 class 文件后源代码里的 i++会变为++i 主 資深大佬 : silverwings @lxilu #1 @hqweay #2@jackrelative #8@aureole999 #9用 IDEA 反编译了一下 确实所有循环里的 i++、i += 1 、++i 、i = i + 1 都变成了++i 应该是字节码方面是一样的 测试环境是 Java11 主 資深大佬 : silverwings @Jooooooooo #5@lxk11153 #6这个 C++的相关介绍里有讲 比如后自增的返回就不是左值不是对象本身我也是看到这个才想问 Java 的而且在几乎所有竞赛里 排名靠前的 C++选手清一色都是++i 没有任何后自增参考力扣任何一场周赛