日期:2014-05-20  浏览次数:20698 次

THINK IN JAVA 疑惑
THINK   IN   JAVA里面写到
“特别是对象引用的都放到堆栈里面”
而NEW出来的放在堆里面
但是,当我们申请数组时,为引用数组
那应该放到堆栈里面
可是数组是NEW出来的啊,不是矛盾么
className[]   a=new   className[5];
这个a[0]是个引用,存放到哪里呢??

------解决方案--------------------
楼主的数组问题a[0]显然是放在堆中的,
而且不是所有的引用都是在栈里面的例如实例变量
class A
{
Object o;
}
如果A a=new A();这个时候a是放在栈里面的,然而实例变量o是放在堆中的。
scjp的官方教程写的很清楚,准确的讲实例变量和new出来的是放在堆中,局部变量是放在栈中的。