Integer.parseInt与new Integer的区别

6
< p > Integer.parseInt("5")new Integer("5") 有什么区别? 我在代码中看到这两种类型都被使用了,它们之间有什么区别?


1
可能相关:http://stackoverflow.com/a/18604959/956660$ - Cyrbil
3
搜索文档,你就会找到答案。 - moffeltje
可能是integer a = 5和new Integer(5)之间的区别是什么?的重复问题。 - Richard Erickson
1
@JavaKid因为答案可能只需要查看API文档就能找到。 - Robin Krahl
2个回答

23

他们使用相同的实现:

public Integer(String s) throws NumberFormatException {
this.value = parseInt(s, 10);
}

public static int parseInt(String s) throws NumberFormatException {
return parseInt(s,10);
}
主要区别在于parseInt返回一个基本类型(int),而Integer构造函数返回(毫不意外)一个Integer实例。
如果你需要一个int,使用parseInt。如果你需要一个Integer实例,可以调用parseInt并将其赋值给一个Integer变量(它会自动装箱),或者调用Integer.valueOf(String),这比调用Integer(String)构造函数更好,因为Integer构造函数不能利用IntegerCache(因为每次写new Integer(..)都会得到一个新的实例)。
我认为没有理由使用new Integer("5")。如果你需要一个Integer实例,Integer.valueOf("5")更好,因为它会为小整数返回缓存实例。

4

Integer的Java文档指出:

该字符串将按照parseInt方法在基数10下的精确方式转换为int值。

所以我想它是一样的。


1
使用构造函数可以创建一个新的Integer实例,而Integer.parseInt()则不是这种情况。 - user140547

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接