Java 在条件语句中使用布尔值vs Boolean.TRUE(布尔值)
在(1.8+)中,以下两个if语句之间是否存在性能差异。我的代码必须在迭代中进行大量此类调用Java 在条件语句中使用布尔值vs Boolean.TRUE(布尔值),java,autoboxing,Java,Autoboxing,在(1.8+)中,以下两个if语句之间是否存在性能差异。我的代码必须在迭代中进行大量此类调用 无效测试(最终布尔值){ if(val){ ... } } 及 无效测试(最终布尔值){ if(布尔值。真值。等于(val){ ... } } JIT编译器会优化消除差异吗?取消装箱是否比equals方法调用更昂贵?取消装箱等于val.booleanValue(),因此JIT应该能够使用这种方法 Boolean.TRUE.equals(val)看起来更好的是null-安全性,因为在null-值上自动
无效测试(最终布尔值){
if(val){
...
}
}
及
无效测试(最终布尔值){
if(布尔值。真值。等于(val){
...
}
}
JIT编译器会优化消除差异吗?取消装箱是否比
equals
方法调用更昂贵?取消装箱等于val.booleanValue()
,因此JIT应该能够使用这种方法
Boolean.TRUE.equals(val)
看起来更好的是null
-安全性,因为在null
-值上自动装箱将导致NullPointerException
另见:
- 在项目中使用Java10