java中parseInt和valueOf之间的区别?
这两种方法有什么区别? 他们似乎做了完全一样的事情(也适用于parseFloat()
, parseDouble()
, parseLong()
等,它们与Long.valueOf(string)
什么不同?
编辑:另外,这些是哪个更好,常规使用更多?
那么, Integer.valueOf(String)
的API确实表示该String
被解释为与赋予Integer.parseInt(String)
完全一样。 但是, valueOf(String)
返回一个new
Integer()
对象,而parseInt(String)
返回一个基本int
。
如果你想享受Integer.valueOf(int)
的潜在缓存好处,你也可以使用这个眼神:
Integer k = Integer.valueOf(Integer.parseInt("123"))
现在,如果你想要的是对象而不是基元,那么使用valueOf(String)
可能比用parseInt(String)
创建一个新对象更有吸引力,因为前者一直存在于Integer
, Long
, Double
等等。
从这个论坛:
parseInt()
返回原始整数类型(int),由此valueOf
返回代表整数的对象java.lang.Integer。 有些情况下你可能需要一个Integer对象,而不是原始类型。
当然,另一个明显的区别是intValue是一个实例方法, parseInt是一个静态方法。
Integer.valueOf(s)
类似于
new Integer(Integer.parseInt(s))
区别在于valueOf()
返回一个Integer
,而parseInt()
返回一个int
(一种基元类型)。 还要注意, valueOf()
可以返回一个缓存的Integer
实例,当==
测试的结果似乎间歇性地正确时,会导致混淆的结果。 在自动装箱之前,可能会有不同的便利性,在Java 1.5之后它并不重要。
而且, Integer.parseInt(s)
也可以采用原始数据类型。