他们之间有什么区别?
l 是一个整数类型的arraylist.
版本1:
int[] a = new int[l.size()];
for (int i = 0; i < l.size(); i++) {
a[i] = l.get(i);
}
return a;
Run Code Online (Sandbox Code Playgroud)
版本2:
int[] a = new int[l.size()];
for (int i = 0; i < l.size(); i++) {
a[i] = l.get(i).intValue();
}
return a;
Run Code Online (Sandbox Code Playgroud)
小智 46
l.get(i);将返回Integer然后调用intValue();它将返回整数类型int.
转换的int到Integer被称为拳击.
将an Integer转换int为unboxing
等等,以便在其他基本类型和相应的Wrapper类之间进行转换.
从java 5开始,它将自动为您执行所需的转换(autoboxing),因此如果您使用的是Java 5或更高版本,则示例中没有任何区别.你必须要关注的唯一事情是如果a Integer为null,并且你直接将其赋值给int那么它将抛出NullPointerException.
在java 5之前,程序员自己不得不做拳击/拆箱.
正如你所注意到的那样,intValue当你已经知道自己有一个时,没有多大用处Integer.但是,此方法未在声明中声明Integer,而是在通用Number类中声明.在你所知道的就是你有一些的情况下Number,你会意识到这种方法的实用性.
小智 5
l.get(i)返回的Object 是Integer类的一个实例.
intValue()是Integer类的实例方法,它返回一个原语int.
请参阅Java参考文档... http://docs.oracle.com/javase/6/docs/api/java/lang/Integer.html#intValue()
| 归档时间: |
|
| 查看次数: |
83730 次 |
| 最近记录: |