例如,请查看以下代码:
Integer myInt = new Integer(5);
int i1 = myInt.intValue();
int i2 = myInt;
System.out.println(i1);
System.out.println(i2);
正如您所看到的,我有两种方法可以将包装器中的整数值复制到原始值:
我可以使用取消装箱
OR
我可以使用方法intValue()
那么......当已经取消装箱时需要一个方法?
答案 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