【问题标题】:Java check if boolean is nullJava 检查布尔值是否为空
【发布时间】:2013-04-02 23:52:34
【问题描述】:

如何检查布尔值是否为空?因此,如果我知道“hideInNav”为空。我该如何停止 它从进一步执行?像下面这样的东西似乎不起作用,但为什么呢?

boolean hideInNav = parent.getProperties().get("hideInNav", false);
String hideNavigation = hideInNav != null ? hideInNav : "";

【问题讨论】:

    标签: java performance boolean nullable


    【解决方案1】:

    boolean 只能是 truefalse,因为它是 primitive datatype(+ boolean 变量默认值为 false)。如果您想使用 null 值,则可以改用 Boolean 类。 Boolean 是一种引用类型,这就是您可以将 null 分配给布尔“变量”的原因。示例:

    Boolean testvar = null;
    if (testvar == null) { ...}
    

    【讨论】:

    • 所以我可以这样做:**Boolean hideInNav = parent.getProperties().get("hideInNav", false); if(hideInNav != null){ 做某事} **
    • 是的,因为 hideInNav 持有对 Boolean 对象的引用,并且可以是 null(未分配引用)。因此您可以检查引用是否为null
    • BooleanUtils.isTrue(java.lang.Boolean bool) 是我用来检查其状态的条件,因为布尔值可以为空。 commons.apache.org/proper/commons-lang/javadocs/api-2.4/org/…
    • 没有 apache commons:Boolean.TRUE.equals(xxx)
    【解决方案2】:

    boolean 在 java 中不能是 null

    但是,Boolean 可以是 null

    如果boolean 未分配值(例如类的成员),则默认为false

    【讨论】:

    • 正确的解释,谢谢。
    【解决方案3】:

    唯一可以是null 的是非原始的。

    只能容纳TRUEFALSEboolean 是一个原语。内存中的TRUE/FALSE实际上是数字(01

    0 = 假

    1 = 真

    所以当你实例化一个对象时,它将为空 String str; // will equal null

    另一方面,如果您实例化一个原语,它将被分配为 0 默认值。

    boolean isTrue; // will be 0

    int i; // will be 0

    【讨论】:

    • “A Boolean which...”中 Boolean 的大写是不幸的。 boolean 类型的变量只能持有truefalse,但Boolean 类型的变量持有Boolean 对象,或null
    【解决方案4】:

    boolean 是原始类型,因此不能为空。

    它的盒装类型Boolean可以为null。

    该函数可能返回 Boolean 而不是 boolean,因此将结果分配给 Boolean 类型的变量将允许您测试是否为空。

    【讨论】:

      【解决方案5】:

      在 Java 中,null 仅适用于对象引用;因为boolean是原始类型,所以不能赋值null

      很难从您的示例中获取上下文,但我猜如果hideInNav 不在getProperties() 返回的对象中,那么您指定的(默认值?)将是false。我怀疑这是您看到的错误,因为false 不等于null,所以hideNavigation 得到的是空字符串?

      如果您的代码示例有更多上下文,您可能会得到一些更好的答案。

      【讨论】:

        【解决方案6】:

        null 是分配给引用类型的值。 null 是保留值,表示引用与对象的实例不同。

        boolean 不是对象的实例。它是一个原始类型,如intfloat。同理:int x 的值为0boolean x 的值为false

        【讨论】:

        • 同意。不是拼写错误的最佳时间!快速编辑:)
        【解决方案7】:

        boolean 是 Java 中的原始数据类型,原始数据类型不能像其他原始数据类型 int、float 等为空,如果未分配,它们应该包含默认值.

        在Java中,只有对象可以赋值为null,这意味着对应的对象没有引用,因此在内存中不包含任何表示。

        因此,如果您想将对象作为 null 使用,则应该使用在其内部包装 原始布尔类型值 的布尔类对象。

        这些在 Java 中被称为包装类

        例如:

        Boolean bool = readValue(...); // Read Your Value
        if (bool  == null) { do This ...}
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-10-29
          • 1970-01-01
          • 1970-01-01
          • 2016-09-19
          • 1970-01-01
          • 2019-05-03
          • 2016-08-22
          相关资源
          最近更新 更多