java - 调用 Double.valueOf(String s) 和 new Double(String s) 有什么区别?

标签 java

所以我有一个字符串,我想用该字符串作为值创建一个 Double 对象。

我可以打电话

Double myDouble = new Double (myString);

或者我可以打电话

Double myDouble = Double.valueOf(myString);

有区别吗?我猜第一个保证在堆上创建一个新对象,第二个可能重用现有对象。

额外加分:字符串可能是null,在这种情况下我希望 Double 是null,但以上两个都抛出空指针异常。有没有写法

双 myDouble = myString == null ? null : Double.valueOf(myString);

代码更少?

最佳答案

取决于实现。 openJDK 6 b14使用 Double(String s) 的实现:

this(valueOf(s).doubleValue());

因此它在内部调用 valueOf(String s) 并且必须与直接调用该方法相比效率较低。

关于java - 调用 Double.valueOf(String s) 和 new Double(String s) 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4757998/

相关文章:

java - 从 IP 网络摄像头获取流

java - 我的程序在 Eclipse 中运行,但不是作为可执行 jar 运行。 NoClassDefFoundError、ClassNotFoundException

websphere - 如何找出WebSphere发行版中包含哪些第三方库版本

java - 等同于带有多个字符定界符的 StringTokenizer

java - 在hibernate spring jsf和primefaces的集成中将primefaces数据表编辑到数据库后保存数据

java - Java Web应用程序中主要方法的用途

java - 在所需的输出中查找模式

java - 我需要将 JBoss 工具添加到我的 Eclipse,但我使用的是 springtoolsuite (STS)

java - 如何以相反的顺序获取 char 数组?

java - 使用 Apache Lucene 删除磁盘中的所有索引数据/文件?