【问题标题】:What's the difference between boolean and Boolean in Java? [duplicate]Java中的布尔值和布尔值有什么区别? [复制]
【发布时间】:2010-11-20 16:16:15
【问题描述】:

我想了解 Java 中 Booleanboolean 类型之间的区别,特别是它们与 GWT 相关的区别。 我知道这些方法不受支持,但如果可用,我想了解更多信息。

【问题讨论】:

    标签: java gwt boolean


    【解决方案1】:

    这对于 GWT 和 Java 来说相当简单:

    • 布尔值可以是yes或no
    • 布尔值可以是yes、no 或NULL。

    因此,除非您需要 NULL(例如,您从数据库中加载字段,并且您希望 NULL 与 false 不同),否则请坚持使用布尔值。

    【讨论】:

    • 我希望布尔值可以传递给一个方法并且布尔值可以被设置并且调用者会知道它......反之亦然。
    【解决方案2】:

    我不确定 GWT 因素是否会产生影响,但总的来说:

    boolean 是 java 原始类型,而 Boolean 是包装布尔值的对象/引用类型

    像这样在基元和对象之间进行转换称为装箱/拆箱。

    这里有更多信息:

    http://javaeye.wordpress.com/2008/06/17/boxing-and-unboxing-conversion/

    你为什么问盒子?

    http://java.sun.com/j2se/1.5.0/docs/guide/language/autoboxing.html

    http://www.javapractices.com/topic/TopicAction.do?Id=197

    【讨论】:

    • +1 表示框/拆箱提及:-)。如果我理解得很好,无法将原始(如intboolean)放入集合中,是BooleanInteger 等包装对象的主要(如果不是唯一原因) ...
    【解决方案3】:

    在 Java 中,boolean 是文字 truefalse,而 Booleanboolean 的对象包装器。

    很少有理由使用Boolean 而不是boolean,除非需要对象引用,例如List

    Boolean 还包含静态方法parseBoolean(String s),您可能已经知道了。

    【讨论】:

      【解决方案4】:

      因为Boolean可以为null,所以可以用于延迟加载。

      if(hasRoots == null){
         calculateRoots();
      }
      

      【讨论】:

        【解决方案5】:

        Java 具有原始类型(int、boolean、float 等),并且无论何时您希望将它们用作对象的实例,它们都被包装在关联的 Class 类型中。例如,布尔值被布尔值包裹,int 被包裹为 Integer 等等。

        它也有它的好处。 boolean 没有辅助方法(因为它不是一个类),但 Boolean 有。因此,如果您想将字符串转换为布尔值,您可以尝试 Boolean.valueOf("true")。

        希望对您有所帮助。

        【讨论】:

          【解决方案6】:

          就 GWT 而言,它们在 GWT 中与在 java 中的相同。
          boolean 是原语,而 Boolean 在对象包装器中。

          【讨论】:

            【解决方案7】:

            根据 GWT JRE 仿真文档 (http://code.google.com/webtoolkit/doc/1.6/RefJreEmulation.html),布尔类型支持这些方法: Boolean(boolean), Boolean(String), parseBoolean(String), toString(boolean), valueOf(boolean), valueOf(String), booleanValue(), compareTo(Boolean), equals(Object), hashCode(), toString( )

            关于 boolean 和 Boolean 对象类型之间的区别。布尔对象可以处于 3 种状态,因此并不完全相同。但是,如果这对 GWT 有影响(性能方面)我不知道,我的猜测是这并不重要,因为 GWT 编译器会优化代码,并且大多数操作可以简单地映射到本机 javascript 布尔操作。

            但像往常一样:确定您必须测量(并考虑到这可能会因您测量的浏览器/版本而异)。

            布尔对象类型通常不经常使用,因为布尔原生类型更自然(您不需要一直检查 null)。

            【讨论】:

              【解决方案8】:

              boolean 是原始类型,而 Boolean 是包装类。同样适用于 (int,Integer),(long,Long) 等。 包装类将各自的原始数据类型“包装”到该类的对象中。

              它们与集合一起使用,因为集合不允许使用原始类型。此外,使用包装类可以让您访问可以在该对象上调用的许多方法。例如。字符包装类有如下方法:

              isDigit() – 判断字符是否为数字。 isLower() – 判断字符是否为小写字母。 is Letter() – 判断字符是否为字母。

              如果我们使用原始类型而不是包装类,我们就不能使用上述方法。

              【讨论】:

                猜你喜欢
                • 2023-04-10
                • 2013-11-04
                • 2013-04-26
                • 2010-11-13
                • 1970-01-01
                • 1970-01-01
                • 2011-01-29
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多