正确初始化布尔值的方法

时间:2013-10-31 08:14:38

标签: java

如何初始化布尔实例?

是吗

Boolean b = null;

Boolean b = new Boolean(null);

哪一个是正确的编码习惯?

4 个答案:

答案 0 :(得分:3)

如果您需要null Boolean,第一个是正确的。

我个人不喜欢null个值,而更喜欢使用boolean,默认情况下不能nullfalse

为了理解第二个语句你需要了解的关于Java原始包装器的内容。 Boolean只是boolean周围的对象包装器;当你直接申报时:

Boolean b = false;

正在进行一些自动装箱,这基本上等同于编写

Boolean b = Boolean.FALSE;

如果声明new Boolean,则创建一个新的独立Boolean对象,而不是允许编译器(可能)重用现有引用。

很少(如果有的话)使用原始包装类型的构造函数。

答案 1 :(得分:1)

绝对不需要为Boolean创建新对象。 这就是javadoc所说的

  

注意:使用此构造函数很少是合适的。除非需要新实例,否则静态工厂valueOf(boolean)通常是更好的选择。它可能会产生明显更好的空间和时间性能。

答案 2 :(得分:1)

Boolean b = new Boolean(null);使用Boolean(String) ctor并将b内部布尔值设置为false,将b引用设为null则不同。

Boolean b = null;
System.out(b.boolValue()); throws a NullPointerException

Boolean b = new Boolean(null);
System.out(b.boolValue()); will print `false`

如果只需要两个状态值(布尔值),则使用基本布尔值;如果您需要三态对象(null, true, false),请使用Boolean对象并将对象引用(如第一个示例中所示)设置为null

答案 3 :(得分:0)

两者都是正确的声明

Boolean b = null; 

这是常量创建,它将转到常量池内存。您需要使用==运算符来比较两个布尔常量。

Boolean b = new Boolean(null); 

这是对象创建,它将转到堆内存。您需要使用.equals()方法来比较两个布尔对象。