所以我有一个String,我想创建一个Double对象,将String作为值.
我可以打电话
Double myDouble = new Double (myString);
或者我可以打电话
Double myDouble = Double.valueOf(myString);
有区别吗?我猜第一个保证在堆上创建一个新对象,第二个可能重用现有对象.
额外的功劳:字符串可能为null,在这种情况下我希望Double为null,但上述两者都抛出NullPointerException.有没有写作方式
Double myDouble = myString == null ? null : Double.valueOf(myString);
用更少的代码?
取决于实施。openJDK 6 b14使用以下实现Double(String s):
this(valueOf(s).doubleValue());
Run Code Online (Sandbox Code Playgroud)
因此,它在内部调用valueOf(String s),并且与直接调用该方法相比,效率肯定较低。