我想转换String
为Double
数据类型。我不知道我是否应该使用parseDouble
or valueOf
。
这两种方法有什么区别?
parseDouble
返回包含字符串值的原始双精度:
返回一个新的 double,初始化为由指定 String 表示的值,由 Double 类的 valueOf 方法执行。
valueOf
返回一个 Double 实例,如果已经缓存,您将获得相同的缓存实例。
返回表示指定双精度值的 Double 实例。如果不需要新的 Double 实例,则通常应优先使用此方法而不是构造函数 Double(double),因为此方法可能会通过缓存频繁请求的值来显着提高空间和时间性能。
为了避免创建新的 Double 对象实例的开销,您通常应该使用valueOf
Double.parseDouble(String)
将返回原始double
类型。
Double.valueOf(String)
将返回一个类型的包装对象Double
。
因此,例如:
double d = Double.parseDouble("1");
Double d = Double.valueOf("1");
而且,valueOf(...)
是一个重载的方法。它有两种变体:
而parseDouble
具有以下签名的单个方法:
parseDouble() 方法用于初始化一个字符串(它应该包含一些数值)......它返回的值是原始数据类型,如 int、float 等。
但是 valueOf() 创建了一个 Wrapper 类的对象。您必须打开它才能获得双精度值。它可以与巧克力相提并论。制造商用一些箔纸或纸包裹巧克力以防止污染。用户拿起巧克力,取下并扔掉包装纸,然后吃掉。
观察以下转换。
int k = 100;
Integer it1 = new Integer(k);
int 数据类型 k 使用 Integer 类转换为对象 it1。it1 对象可用于 Java 编程中任何需要 k 对象的地方。
以下代码可用于展开(从 Integer 对象中取回 int)对象 it1。
int m = it1.intValue();
System.out.println(m*m); // 打印 10000
//intValue() 是 Integer 类的一个方法,它返回一个 int 数据类型。
它们都将 String 转换为 double 值,但是 parseDouble() 方法返回原始 double 值, valueOf() 方法进一步将原始 double 转换为包含原始 double 值的 Double 包装类对象。
如果 String 中的值不可转换为原始 double,则从 String 到原始 double 的转换可能会引发 NFE(NumberFormatException)。
文档parseDouble()
说“返回一个初始化为指定字符串表示的值的新双精度值,由 Double 类的 valueOf 方法执行。”,所以它们应该是相同的。
如果要将字符串转换为双精度数据类型,则大多数选择 parseDouble() 方法。请参阅示例代码:
String str = "123.67";
double d = parseDouble(str);
您将获得双倍的价值。请参阅 tutorialData 中的 StringToDouble教程。