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

java中的第三个布尔状态是什么?,java,boolean,primitive,Java,Boolean,Primitive,我知道,根据定义,布尔值只包含两种状态,真或假。我想知道布尔值在用这些状态之一初始化之前有什么值。 编辑:按大众需求: 除非您使用的是wrapped,它默认为nullsudhir.j 如果它是局部变量,则在初始化之前引用它是编译器错误。如果是字段,则初始化为false。在JAVA布尔类型中,默认为false。没有第三种状态。 正如@Yishai所说,如果不赋值,布尔字段默认为false。使用前必须分配局部变量: 访问未初始化的本地 变量将导致编译时 错误 请参阅。如果您有类似的错误,则为错误 b

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

编辑:按大众需求:


除非您使用的是wrapped,它默认为nullsudhir.j


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

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

没有第三种状态。 正如@Yishai所说,如果不赋值,布尔字段默认为false。使用前必须分配局部变量:

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


请参阅。

如果您有类似的错误,则为错误

boolean isTrue;

System.out.println(isTrue);
您应该会得到编译时错误,因为布尔值未初始化。默认情况下,当您尝试初始化此项时,它将设置为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)。

仅供参考,布尔值默认为false,基元数默认为0、0L、0f或0d(视情况而定),字符默认为“\0”,对象引用(如布尔值)默认为null


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

第三个布尔状态通常是FileNotFound。@Brian,这不取决于你是否实现了Paula Bean吗?@Paul:当你不观察时,它不存在。只有打开门,量子函数才会崩溃:D@talnox当你不观察时,它是概率云!通常,Java变量默认为C程序员可能称之为“false”的值,例如0、null、false等,除非您使用的是包装布尔值,它默认为null。@sudhir.j完全正确。我希望对答案进行编辑以包含该内容。我碰巧知道sudhir.j这一事实,这就是为什么我将该问题标记为基本问题,但我也希望对答案进行编辑以包含该问题,以便于其他人。是的,但如果布尔值是一个实例变量,则默认为false,无警告。