parseInt()如何不同于valueOf() ?
它们似乎对我做了完全相同的事情(也适用于parseFloat(), parseDouble(), parseLong()等,它们与Long.valueOf(字符串)有什么不同?
另外,按照惯例,哪一个更可取,更常用呢?
parseInt()如何不同于valueOf() ?
它们似乎对我做了完全相同的事情(也适用于parseFloat(), parseDouble(), parseLong()等,它们与Long.valueOf(字符串)有什么不同?
另外,按照惯例,哪一个更可取,更常用呢?
当前回答
如果你检查Integer类,你会发现valueof调用parseInt方法。最大的区别是当你调用valueof API时缓存。如果值在-128到127之间,它会缓存。更多信息请参见下面的链接
http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html
其他回答
如果你检查Integer类,你会发现valueof调用parseInt方法。最大的区别是当你调用valueof API时缓存。如果值在-128到127之间,它会缓存。更多信息请参见下面的链接
http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html
整数valueOf(字符串s)
参数被解释为表示一个带符号的十进制整数,就像参数被赋给parseInt(java.lang.String)方法一样。 结果是一个Integer对象,表示字符串指定的整数值。 换句话说,该方法返回一个Integer对象,其值等于: 新的整数(Integer.parseInt (s))
来自本论坛:
parseInt()返回原始整数 类型(int),其中valueOf返回 . lang。整数,它是对象 整数的代表。在那里 是你想要的环境吗 一个Integer对象,而不是 原始类型。 当然,还有一个明显的区别 intValue是一个实例方法吗 其中parseInt是一个静态方法。
整数。parseInt可以只返回int作为本机类型。
整数。valueOf实际上可能需要分配一个Integer对象,除非该整数恰好是预分配的整数之一。这样成本更高。
如果你只需要本地类型,使用parseInt。如果你需要一个对象,使用valueOf。
此外,由于这种潜在的分配,自动装箱实际上在各方面都不是一件好事。它可以使事情变慢。
parse*变体返回基本类型,valueOf版本返回对象。我相信valueOf版本还将使用内部引用池为给定值返回SAME对象,而不仅仅是具有相同内部值的另一个实例。