关于java对象销毁的疑问??

Integer[] a = new Integer[] { 1, 2, 3 };
Integer p;
p = a[0];
p = null;
System.out.println(a[0]);
/**
* 输出结果:1
*/

    不应该是 null吗?

System.out.println(a[0]); 你输出的是a[0] 当然是1

这算什么销毁啊,你只是把a【0】的值赋给了p而已,a对象还存在的啊

你打印的是a[0],你这里只是p变了,数组里面还是没变的

即使按你的逻辑,p=a[0]是p指向了a[0],但是p=null相当于不再指向a[0]了啊
在这里,1是存放在栈里,a[0]指向1的位置,p=a[0]时p是a[0]的引用,p=null并没有将a[0]的指向改变

java是按值传递的 不是按引用传递的,它只是简单的传递了个值而已,原来对象的引用并没有变,还是指向了原来的数据