parseInt()如何不同于valueOf() ?
它们似乎对我做了完全相同的事情(也适用于parseFloat(), parseDouble(), parseLong()等,它们与Long.valueOf(字符串)有什么不同?
另外,按照惯例,哪一个更可取,更常用呢?
parseInt()如何不同于valueOf() ?
它们似乎对我做了完全相同的事情(也适用于parseFloat(), parseDouble(), parseLong()等,它们与Long.valueOf(字符串)有什么不同?
另外,按照惯例,哪一个更可取,更常用呢?
当前回答
查看Java源代码:valueOf使用parseInt:
/**
* Parses the specified string as a signed decimal integer value.
*
* @param string
* the string representation of an integer value.
* @return an {@code Integer} instance containing the integer value
* represented by {@code string}.
* @throws NumberFormatException
* if {@code string} cannot be parsed as an integer value.
* @see #parseInt(String)
*/
public static Integer valueOf(String string) throws NumberFormatException {
return valueOf(parseInt(string));
}
parseInt返回int(不是整数)
/**
* Parses the specified string as a signed decimal integer value. The ASCII
* character \u002d ('-') is recognized as the minus sign.
*
* @param string
* the string representation of an integer value.
* @return the primitive integer value represented by {@code string}.
* @throws NumberFormatException
* if {@code string} cannot be parsed as an integer value.
*/
public static int parseInt(String string) throws NumberFormatException {
return parseInt(string, 10);
}
其他回答
来自本论坛:
parseInt()返回原始整数 类型(int),其中valueOf返回 . lang。整数,它是对象 整数的代表。在那里 是你想要的环境吗 一个Integer对象,而不是 原始类型。 当然,还有一个明显的区别 intValue是一个实例方法吗 其中parseInt是一个静态方法。
整数valueOf(字符串s)
参数被解释为表示一个带符号的十进制整数,就像参数被赋给parseInt(java.lang.String)方法一样。 结果是一个Integer对象,表示字符串指定的整数值。 换句话说,该方法返回一个Integer对象,其值等于: 新的整数(Integer.parseInt (s))
因为您可能正在使用jdk1.5+,它会自动转换为int。所以在你的代码中,它首先返回Integer,然后自动转换为int。
你的代码和
int abc = new Integer(123);
Integer.valueOf(s)
类似于
new Integer(Integer.parseInt(s))
区别在于valueOf()返回一个Integer,而parseInt()返回一个int(基本类型)。还要注意,valueOf()可以返回一个缓存的Integer实例,这可能会导致令人困惑的结果,其中==测试的结果似乎间歇性地正确。在自动装箱之前,便利性可能会有所不同,在java 1.5之后,这就不重要了。
此外,Integer.parseInt(s)也可以接受基本数据类型。
对于ValueOf ->,它正在创建一个Integer对象。不是基元类型,也不是静态方法。 在ParseInt的情况下。ParseFloat ->返回各自的基本类型。And是一个静态方法。
我们可以根据需要使用任何一种。对于ValueOf,因为它正在实例化一个对象。如果我们只需要一些文本的值,它会消耗更多的资源,那么我们应该使用parseInt,parseFloat等。