首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

THINK IN JAVA 疑惑解决思路

2012-01-08 
THINK IN JAVA 疑惑THINKINJAVA里面写到“特别是对象引用的都放到堆栈里面”而NEW出来的放在堆里面但是,当我

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出来的是放在堆中,局部变量是放在栈中的。

热点排行