Java 双类与双基元数据类型
我从其他参考文献中了解到,Java 双类与双基元数据类型,java,double,Java,Double,我从其他参考文献中了解到,Double有很多缺点 与双基元数据类型相比有两个缺点: 速度较慢(参考:) 由于涉及元数据,它需要更多的存储空间 现在,我知道我们可以用Double做一些操作。但这些方法中的大多数(85%)是静态的,因此没有很大的优势。我还知道double不能为null Double doubleClass = null; // Is valid double doubleType = null; // Results in NPE 在所有这些缺点之后,我无法理解为什么我们会在现
Double
有很多缺点
与双基元数据类型相比有两个缺点:
Double doubleClass = null; // Is valid
double doubleType = null; // Results in NPE
在所有这些缺点之后,我无法理解为什么我们会在现实生活中使用Double而不是Double。一些人能给出一个真实世界的例子并加以解释吗
谢谢据我所知,有两个主要原因
Double
是一个引用类型,因此可以是null
。有时这些信息很重要。(想象一个场景,当用户可以在表单中填写各种字段时,有些字段是可选的,并且您希望了解字段是否已填写。null
值是一个相当好的指示器,表明表单字段为空。)但一般来说,您是对的,只要有可能,就应该使用原语类型。
Double
是原语Double之上的包装类。Java集合框架有列表、集合等容器。这些容器的问题是它们不能接受原语。因此,double被隐式转换为double并插入到集合中(自动装箱)
此外,Double将比Double慢,因为与原语不同,类有一些簿记/开销
PS:Double提供了许多APi/方法来做事情。示例-
Double.parseDouble(TypeX值)
从TypeX的值创建一个新的Double
double d1,d2; // Initalized to some value
d1==d2; // will return true but some(very few will return false)
你可以在网上看到这件事您应该尽可能使用基元类型,而不是双重类型。您使用过集合吗?,
Double doubleType=null;//NPE中的结果
未编译。还未编译。我正处于学习阶段。@newbie2314《后记》的评论实际上是对你问题的一个很好的回答。-请参阅Numbers
和自动装箱和取消装箱
。如果听起来很愚蠢,那很抱歉,但它的主要用途是收集,而不是其他任何地方?@newbie2314-这就是原因之一。除此之外,它还提供了一些方法。@TheLostMind Double.parseDouble这不是又一个静态调用吗?@ErrorAnswer-是的。因此,如果实例为null
,它就可以工作。这就是我提到的原因-如果你做doubleClass,你可以得到NPE。SomeInstanceLevel FieldorMethod。谢谢你,这让它更清楚了。感谢我所寻找的例子。
double d1,d2; // Initalized to some value
d1==d2; // will return true but some(very few will return false)