如果包装器使用拆箱,那么intValue()方法需要什么?

时间:2013-04-13 08:41:17

标签: java int wrapper unboxing

例如,请查看以下代码:

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

System.out.println(i1);
System.out.println(i2);

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

我可以使用取消装箱

OR

我可以使用方法intValue()

那么......当已经取消装箱时需要一个方法?

2 个答案:

答案 0 :(得分:9)

Unboxing是在Java 5中引入的。自最初发布以来,包装器(包括此方法)一直存在。

指向Javadoc

的链接

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

该方法必须留在。

答案 1 :(得分:7)

除了弗兰克给出良好历史观点的答案之外,在某些情况下仍然需要使用intValue()

请注意以下陷阱,表明您不能将Integer视为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