例如,如果你有
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);
他们会占用不同的内存吗?任何帮助/答案都将受到高度赞赏,谢谢!
答案 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本身的大小相同,这些数组将占用不同的数量。