在java(1.8+)中,以下两个if语句之间存在性能差异。我的代码必须在迭代中进行很多此类调用。
void test(final Boolean val) {
if (val) {
...
}
}
和
void test(final Boolean val) {
if (Boolean.TRUE.equals(val) {
...
}
}
JIT编译器会优化差异吗?拆箱是否比equals
方法调用贵?
答案 0 :(得分:3)
拆箱等于val.booleanValue()
,因此JIT应该能够inline这种方法。
Boolean.TRUE.equals(val)
的安全性看起来更好,因为对null
值进行自动装箱将导致null
。
另请参阅: