Java 上的任何对象都存在于堆上。
在 Java 中,数组也是一个对象,因此数组对象存在于堆上。
说明:-
当你写
int a=new int[5],
(new int[5]) 部分创建对象,因此存在于堆上。
Integer x=new Integer(10000)
也是一个对象(请记住,新操作员将始终创建新对象)。
因此,当你写作时,
Integer [] d2 = new Integer[5];
它是整数对象数组。
就 ArrayList 而言,它也是一个类,但它包装了数组 Object 并为其添加了动态内存。所以,
ArrayList d3 = new ArrayList();
再次创建 Object 并因此存在于堆上。
将 ArrayList 类视为:
class ArrayList{
int index=0;
Object[] obj=new Object['some integer value (depends on JVM)'];
public void add(Object o){
obj[index]=o;
index++;
}
//other methods
}
所以当你写 d3.add(5) 实际上 d3.add(new Integer(5)) 被调用。
记住一条黄金法则:在 Java 中,您创建的任何对象都存在于 HEAP 上,它们的引用存在于堆栈上。
数组是对象的证明:-
int[] a={4,3,1,2};
System.out.println(a instanceof Object);
//打印为真