在条件语句中使用Boolean_val与Boolean.TRUE(Boolean_val)

时间:2018-08-10 04:50:53

标签: java autoboxing

(1.8+)中,以下两个if语句之间存在性能差异。我的代码必须在迭代中进行很多此类调用。

void test(final Boolean val) {
    if (val) {
        ...
    }
}

void test(final Boolean val) {
    if (Boolean.TRUE.equals(val) {
        ...
    }
}

JIT编译器会优化差异吗?拆箱是否比equals方法调用贵?

1 个答案:

答案 0 :(得分:3)

拆箱等于val.booleanValue(),因此JIT应该能够inline这种方法。

Boolean.TRUE.equals(val)的安全性看起来更好,因为对null值进行自动装箱将导致null

另请参阅: