7

例如,看看这段代码:

Integer myInt = new Integer(5);
int i1 = myInt.intValue();
int i2 = myInt;
    
System.out.println(i1);
System.out.println(i2);

如您所见,我有两种方法可以将整数值从包装器复制到原始值:

我可以使用拆箱

或者

我可以使用方法Integer#intValue()

那么在已经拆箱的情况下需要一个方法吗?

4

2 回答 2

13

拆箱是在Java 5中引入的。自原始版本以来,包装器(包括此方法)就已存在。

Javadoc的链接

在那段时间(1996 年),我们确实需要该intValue()方法,并且由于 Oracle 保证向后向后兼容性……达到一定水平(在主要版本中并不总是 100%)。

该方法必须保留。

于 2013-04-13T08:45:36.183 回答
11

除了弗兰克的回答给出了一个很好的历史观点之外,intValue()在某些情况下仍然需要使用今天。

请注意以下表明您不能将 anInteger视为 的陷阱int

 Integer i1 = new Integer(5);
 Integer i2 = new Integer(5);

 //This would be the way if they were int
 System.out.println(i1 == i2); //Returns false

 //This is the way for Integers
 System.out.println(i1.intValue()==i2.intValue()); //Returns true
 System.out.println(i1.equals(i2)); //Returns true

退货

false
true
true
于 2013-04-13T09:29:27.047 回答