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

Boolean_val vs Boolean.TRUE(Boolean_val) when used in a conditional statement

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

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

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

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

拆箱等于val.booleanValue(),所以JIT应该可以inline这样的方法。

Boolean.TRUE.equals(val) 看起来更好的是 null-安全感,因为在 null- 值上自动装箱会导致 NullPointerException.

另请参阅: