我有一个字符串,想用这个字符串作为值创建一个Double对象。
可以使用以下两种方式之一:
Double myDouble = new Double (myString);
Double myDouble = Double.valueOf(myString);
这两种方式有什么区别?第一种方式保证在堆上创建一个新的对象,而第二种方式可能会重复使用现有对象。
额外加分题:如果字符串是 null,则希望Double也是null,但上述两种方法都会抛出NullPointerException异常。是否有一种更简洁的写法?
Double myDouble = myString == null ? null : Double.valueOf(myString);
new Double(String)
和其他类似的构造函数调用已被弃用,因为在较新的JDK实现中,valueOf
(或用于创建原始类型的parseDouble
等方法)“可能会产生显着更好的空间和时间性能”。 - Joshua Goldberg