java中的第三个布尔状态是什么?

虽然我知道根据定义,布尔值只包含两个状态,true或false。 我想知道布尔值在用这些状态之一初始化之前有什么值。

它默认为false。

编辑:按流行需求:

除非您使用包装的布尔值 ,默认为null。 – sudhir.j

如果它是局部变量,则在初始化之前引用它是编译器错误。 如果是字段,则将其初始化为false。

public class NewMain { boolean foo; Boolean bar; public static void main(String[] args) { NewMain obj = new NewMain(); obj.whatBoolean(); } public void whatBoolean() { System.out.println(foo); System.out.println(bar); } } 

输出

 false null 

我知道这对于一个问题更具哲学性,但是由于自动装箱,你可以使用Java作为一种几乎真正的OO语言(我讨厌拥有原始类型……现在只有当它反向运行时)。 但是,它会在您使用对象时更改行为(为了更好的IMO)。

没有第三国。 正如@Yishai所说,如果你没有赋值,boolean fields默认为false。 必须在使用前分配局部变量:

访问未初始化的局部变量将导致编译时错误

见文档 。

在JAVA中,布尔类型默认为False。

FYI,布尔值默认为false,原始数字默认为0,0L,0f或0d,char默认为’\ 0’,对象引用(如Boolean)默认为null。

这也适用于数组的内容。 (一个常见的问题是对象数组最初充满了空值)

这是假的

如果你有类似的东西

 boolean isTrue; System.out.println(isTrue); 

您应该得到编译时错误,因为布尔值未初始化。 默认情况下,当您尝试初始化它时,它将被设置为false;