栈:基本数据类型,局部变量,用完后消失
堆:new创建的实例化对象,数组,用完后jvm启动垃圾回收
int x[] = new int[3];
int y[] = x;
y[0] = 100;
x[0] = 300;
System.out.println(y[0]);---->会输出300
x = null;
System.out.println(y[0]);---->会输出300
原因:
第一个输出300:x、y都使用了同一个堆内存中的数组,y[0]和x[0]先后改变了堆内存中的数组[0]值。
第二个输出300:x = null导致堆内存中的数组不再被x使用,但依然被y使用,x=null没有改变堆内存中的数组值。