包含不同类型对象的ArrayLists是否使用不同的内存量?

时间:2013-08-09 03:59:56

标签: java memory arraylist

例如,如果你有

    int a=2; int b=3;
    ArrayList<Integer>integers=new ArrayList<Integer>();
    integers.add(a); integers.add(b);

    String c="cow"; String d="deer";
    ArrayList<String> strings= new ArrayList<String>();
    strings.add(c); strings.add(d);

他们会占用不同的内存吗?任何帮助/答案都将受到高度赞赏,谢谢!

5 个答案:

答案 0 :(得分:48)

ArrayLists本身只不过是一组引用,它们占用相同数量的内存(如果大小相同),无论它们所拥有的对象类型如何。但是,ArrayList引用的项目都会占用不同的内存量。

答案 1 :(得分:10)

ArrayLists只是一组引用,因此ArrayList的大小不依赖于它指向的对象的类型。因此,ArrayList的内存不依赖于引用对象类型。

答案 2 :(得分:7)

在你的情况下,理论上,他们会消耗相同数量的内存,在运行时泛型“不存在”,两个数组实际上都是对象数组。

答案 3 :(得分:0)

ArrayList arr = new ArrayList<Foo>(10);

arr只包含1个支持数组的引用。这个后备数组将在堆中有10个不同Foo对象的10个引用。

答案 4 :(得分:-1)

ArrayList是一个像String或者其他的对象。它将集合存储在内部Object []数组中。如果内存但ArrayList本身的大小相同,这些数组将占用不同的数量。