在编写声明一个简单数组并将其添加到列表的代码时遇到一个问题。
int[] value = new int[]{1, 2, 3};
List<Integer> arrayToList = new ArrayList<>();
for (int number : value) {
arrayToList.add(number);
}
我想知道list.add()在内部如何工作。 如果每个元素都使用“ new”关键字来创建实例。 如果没有,我想知道是否正在使用Integer.valueOf()。
总而言之,每个数组元素都是原始类型。 我想知道它如何在内部工作并将其转换为引用类型。
答案 0 :(得分:2)
这称为自动装箱。您可以从这里Why is int changed to Integer automatically in java?
了解更多有关如何将int转换为Integer的信息。如果您想确切了解ArrayList.add中发生的情况,则可以从此处http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/tip/src/share/classes/java/util/ArrayList.java
查看源代码。public boolean add(E e) {
ensureCapacityInternal(size + 1); // Increments modCount!!
elementData[size++] = e;
return true;
}
答案 1 :(得分:-2)
add方法将对象作为输入。它是超一流的。因此不需要自动装箱或拆箱,无论您传递的包装类对象是什么,都将被添加到列表中。