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

标签 java autoboxing

(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-value 上的自动装箱将导致 NullPointerException

另请参阅:

关于java - 在条件语句中使用时 Boolean_val 与 Boolean.TRUE(Boolean_val),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51779169/

相关文章:

java - Java中如何将int[]转换为List<Integer>?

java - 请求中包含列表的映射对象 - Spring MVC

java - 命令行Java执行和杀死

java - 单元测试 : finding class dependencies

java - libgdx 第一次使用。可运行错误 'Creating Gradle model'

java - Amazon SQS - FIFO 队列消息请求,接收不一致

java - 自动装箱-编程概念

java - 为什么在这种情况下不会发生自动装箱?

java - JVM 是否优化了不必要的自动装箱?

java - 使用原语及其包装器的方法重载