为了账号安全,请及时绑定邮箱和手机立即绑定

Java对象的成员变量存放在哪

Java对象的成员变量存放在哪

莫回无 2019-01-17 05:27:46
public class A{ public static void main(String[] args){ B b = new B(); } } public class B{ int i; C c; B(){ i = 1; c = new C(); } } public class C{ } 一般都说 引用在栈上,对象实例在堆上。针对这一段代码,b在栈上,b指向的B实例在堆上。那请问, 1. i存放在哪?2.C实例在堆上,那C实例的引用c存放在哪?3.实例B所在的空间,存储了哪些东西(到底存储的是引用,还是实例)?
查看完整描述

3 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

记住一个原则即可:方法体中的引用变量和基本类型的变量都在栈上,其他都在堆上。

所以B对象里面所有东西都在堆上,main方法中的b变量在栈上。

查看完整回答
反对 回复 2019-02-12
?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

以32位为例,该程序的实例B存放对象头(8字节)+实例数据i(4字节)+C对象的引用c(4字节)=16字节
所以i存放在B实例里面,C对象的引用c也放在B对象里面。

查看完整回答
反对 回复 2019-02-12
?
翻翻过去那场雪

TA贡献2065条经验 获得超14个赞

java的每一个类都有自己的栈,成员变量指针都在栈上,成员变量是类的话,在堆里.

查看完整回答
反对 回复 2019-02-12
  • 3 回答
  • 0 关注
  • 2137 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信