什么是Java中的.intValue()?

它们之间有什么区别?

l是Integer类型的arraylist。

版本1:

 int[] a = new int[l.size()]; for (int i = 0; i < l.size(); i++) { a[i] = l.get(i); } return a; 

版本2:

 int[] a = new int[l.size()]; for (int i = 0; i < l.size(); i++) { a[i] = l.get(i).intValue(); } return a; 

l.get(i); 将返回Integer ,然后调用intValue(); 在它上面将返回整数类型为int

int转换为Integer称为装箱
Integer转换为int称为取消装箱
等等,用于其他原始类型与其相应的Wrapper类之间的转换。

从java 5开始,它将自动为您执行所需的转换(autoboxing),因此如果您使用的是Java 5或更高版本,则示例中没有任何区别你需要关注的唯一事情是如果一个Integer为null,你直接将它分配给int然后它将抛出NullPointerException。

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

正如您所注意到的,当您已经知道有一个Integer时, intValue并没有多大用处。 但是,此方法未在Integer声明,而是在常规Number类中声明。 在你所知道的是你有一些Number ,你会意识到这种方法的效用。

l.get(i)返回的Object是Integer类的一个实例。

intValue()Integer类的实例方法,它返回一个原语int

请参阅Java参考文档… http://docs.oracle.com/javase/6/docs/api/java/lang/Integer.html#intValue()

Java支持两种类型的结构首先是基元,第二种是对象。

您要问的方法,用于从Object检索值到原语。

表示数字的所有java类型都扩展了类Number 。 如果使用相同的原语和对象类型,则这种方法在某种程度上已被弃用,因为[autoboxing]是在Java 1.5中实现的。

int – 原语

整数 – 对象

在Java 1.5之前,我们强制写入

int i = integer.intValue();

从Java 1.5开始我们就可以写了

int i = integer;

当我们需要将类型从Integer更改为long时,也会使用这些方法

long l = integer.longValue();

get(i)将返回Integer对象,并在调用intValue()时获取其值。在第一种情况下,会自动auto-unboxing

它们完全一样。 正如其他海报所提到的,您可以将Integer对象或int原语放入数组中。 在第一种情况下,编译器会自动将Integer对象转换为基元。 这称为自动拳击。

它只是从数字对象获取原始值的便捷方法: http : //docs.oracle.com/javase/1.4.2/docs/api/java/lang/Number.html

考虑一下代码:

 Integer integerValue = Integer.valueOf(123); float floatValue = integerValue.floatValue(); 

最后一行是一种方便的方法:

 float floatValue = (float)(int)integerValue; 

由于Java中的任何数字类型都可以显式转换为任何其他原始数字类型,因此Number类实现所有这些转换。 像往常一样,其中一些没有多大意义:

 Integer integerValue = Integer.valueOf(123); int intValue = integerValue.intValue(); int intValue2 = (int)integerValue; int intValue3 = integerValue;