我从查看其他参考资料中了解到因此Double
有很多缺点。
与双原始数据类型相比的双重缺点:
现在,我知道有一些操纵我们可以用Double做什么。 JavaDoc但这些方法中大多数(85%)是静态的,因此它不是一个巨大的优势。另一件事我知道double不能为null。
Double doubleClass = null; // Is valid
double doubleType = null; // Results in NPE
在所有这些缺点之后,我无法理解为什么我们会在现实生活场景中使用Double而不是double。有些人可以给出一个真实世界的例子和解释。
由于
答案 0 :(得分:4)
据我所知,有两个主要原因。
Double
是引用类型,因此可以是null
。有时这些信息很重要。 (想象一下,当用户可以填写表单中的各个字段时,有些是可选的,并且您想要确定是否填写了字段。null
值是一个相当好的指标,表示字段已离开空。)但总的来说,你是对的,只要有可能,你应该使用原始类型。
答案 1 :(得分:3)
Double
是原语 double的包装类。 Java Collection框架包含List,Set等容器。这些容器的问题是它们不能接受原语。因此,double被隐式转换为Double并插入到集合中(Autoboxing)。
Double doubleClass = null; // Is valid --> Double is not a primitive. So, you can get NPE if you do doubleClass.someInstanceLevelFieldOrMethod.
double doubleType = 5.5; //is a primitive
另外,Double会慢于double,因为与基元不同,Classes有一些簿记/开销。
PS:Double提供了许多APi /方法来做事。示例 - Double.parseDouble(TypeX value)
从TypeX
答案 2 :(得分:3)
您应该使用Double
的主要原因有很多需要使用类而不是基本类型的Collections API
有些情况下,如果来自不同的数据源,double会有不同的精度。您可以使用类.equals注意大多数情况
double d1,d2; // Initalized to some value
d1==d2; // will return true but some(very few will return false)
您可以在.equals method
正如您所提到的,Double可以为null,而double则不能。考虑一个场景,其中某个对象的值可能存在或者可能存在但是如果它没有那么我们希望它在数据库中为空时检索它会抛出一个带有double的NPE但是不会带有Double。
< / LI> 醇>您应该尽可能使用原始类型而不是Double。