虽然我知道按照定义,布尔类型只有两个状态:true或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用作几乎真正的面向对象语言(我讨厌原始类型...现在只要它也能反向工作就好了)。 但是,当您使用对象时,它确实会改变行为(在我看来更好)。
顺便提一下,布尔值默认为false,原始数字默认为0、0L、0f或0d,字符默认为'\0',对象引用(例如Boolean)默认为null。
这也适用于数组的内容。(一个常见的坑是对象数组最初都是空值)
boolean isTrue;
System.out.println(isTrue);
你应该会得到一个编译时错误,因为布尔值没有被初始化。默认情况下,当你尝试初始化它时,它将被设置为false;
它是假的