什么是Java中的.intValue()?

Tim*_*ess 31 java

他们之间有什么区别?

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.

转换的intInteger被称为拳击.
将an Integer转换intunboxing
等等,以便在其他基本类型和相应的Wrapper类之间进行转换.

从java 5开始,它将自动为您执行所需的转换(autoboxing),因此如果您使用的是Java 5或更高版本,则示例中没有任何区别.你必须要关注的唯一事情是如果a Integer为null,并且你直接将其赋值给int那么它将抛出NullPointerException.

在java 5之前,程序员自己不得不做拳击/拆箱.

  • 在 Java 5 之前,程序员还需要在调用 intValue 之前转换为 Integer。 (2认同)

Mar*_*nik 8

正如你所注意到的那样,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()