我想知道list.add()如何在Java运行时内部运行

时间:2018-08-02 11:57:30

标签: java collections

在编写声明一个简单数组并将其添加到列表的代码时遇到一个问题。

   int[] value = new int[]{1, 2, 3};
   List<Integer> arrayToList = new ArrayList<>();
   for (int number : value) {
       arrayToList.add(number);
   }

我想知道list.add()在内部如何工作。 如果每个元素都使用“ new”关键字来创建实例。 如果没有,我想知道是否正在使用Integer.valueOf()。

总而言之,每个数组元素都是原始类型。 我想知道它如何在内部工作并将其转换为引用类型。

2 个答案:

答案 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方法将对象作为输入。它是超一流的。因此不需要自动装箱或拆箱,无论您传递的包装类对象是什么,都将被添加到列表中。