使用Boolean.valueOf()方法vs(或Java 1.5 autoboxing)创建Boolean对象

时间:2012-07-26 16:36:52

标签: java performance

Boolean.valueOf()Java 1.5 autoboxing之间从Boolean创建booleans的更好做法是什么?为什么?

1 个答案:

答案 0 :(得分:13)

编译器将boolean的自动装箱透明地翻译为Boolean.valueOf()

boolean b = true;
Boolean bb = b;

被翻译为:

iconst_1
istore_1            //b = 1 (true)
iload_1             //b
invokestatic    #2; //Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean;
astore_2            //bb = Boolean.valueOf(b)

使用您认为更有用和可读的任何一个。由于使用Boolean.valueOf()除了额外输入外没有给你任何东西,你应该以自动装箱为目标。


当你考虑相反的转换时情况变得复杂 - 从Booleanboolean。这个时间Boolean.booleanValue()由编译器透明地调用,理论上可以导致NullPointerException