在一次代码中写了一句Double.valueOf(score) //score是一个String类型的数值
时,IDEA提示我最好使用Double.parseDouble()
,那么Double.parseDouble()
和 Double.valueOf()
有什么区别呢?
在网上查了一下,介绍的并不全面而且可能已经过时了,所以直接在代码中点开官方文档说明(java 1.8版本)
Double.valueOf()
- 有两个重载方法,分别是:
Double valueOf(String)、 Double valueOf(double)
,他们的说明分别是(机翻):-
valueOf(String):返回一个 Double 对象,其中包含参数字符串 s 所代表的 double 值。如果 s 为空,则会产生 NullPointerException 异常。s 中的前导和尾部空白字符将被忽略。空白字符会像使用 String.trim() 方法一样被删除;也就是说,ASCII 空格和控制字符都会被删除。
同时该方法在无法解析字符串时会抛出
NumberFormatException
异常。 -
valueOf(double d):返回代表指定 double 值的 Double 实例。如果不需要新的Double 实例,一般应优先使用此方法,而不是构造函数 Double(double),因为此方法通过缓存经常请求的值,可能会大大提高空间和时间性能。
-
Double.parseDouble()
Double.parseDouble()
只能接收字符串类型的参数,返回值是基本类型double
,同样会抛出NumberFormatException
异常:返回一个初始化为指定字符串所代表值的新double
,该值由类Double
的valueOf
方法执行。public static double parseDouble(String s) throws NumberFormatException
- 参数:s - 要解析的字符串。
- 返回值:字符串参数代表的 double 值。
- 抛出:
- NullPointerException - 如果字符串为空
- NumberFormatException - 如果字符串不包含可解析的 double。