关于变量,对象,引用的存放。

引用 22 楼 walang 的回复:

我有个很傻的问题:
如果说,
ArrayList a1 = new ArrayList();
对象在堆里
对象的地址在栈里
那么这个a1在哪啊?a1又怎么和对象的地址关联起来呢。。。
我!@#?*&xxxxxx


new ArrayList() 创建了个对象在堆里,假设JVM给他分配的地址是1234ab;
ArrayList a1 声明了一个引用型变量,在这里是个局部变量,在栈里。
然后就是这个局部变量了,局部变量的信息都保存在class文件的localVariableTable的这么个属性中,localVariableTable属性包含了localVariableInfo项, localVariableInfo包含一个属性(descriptor_index),这个属性值指向包含了这个局部变量信息(比如包含这个变量的类的权限定名,变量名称,类型等)的Constant_UTF8_info条目;localVariableInfo还包含另外一个属性(index),这个index指向的位置就是当前方法的栈帧中保存这个局部变量的值的位置。值就是对象的地址1234ab

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值