java 变量名存储在哪里

Think_Higher
博客专家认证
2015-07-08 04:06:57
如int a = 3中的a存储在哪里?内存中会为3开辟一个空间,但是a怎么办?
就是说那个表示a要不要另外开辟存储空间。是在栈中还是在堆中,还是说不需要存储空间的。

还有就是对象的引用名。比如说:
有一个类 class Student{
........
}
Student st1=new Student();这里的st1是该Student类的一个对象的引用变量,所引用的对象在堆中
但是问题来了, 这里的st1是存放在哪里的?
求解~
...全文
617 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复 2
作为java开发人员,我们关心的是数据,至于数据的容器就不考虑
哈希塞特 2018-11-01
  • 打赏
  • 举报
回复
成员变量存储在堆中的对象里面,由垃圾回收器负责回收。
securitit 2015-07-13
  • 打赏
  • 举报
回复
无论基本类型还是引用类型,引用都存储在栈中。 对于基本类型数据和String类型(根据定义方式不同),是经常使用的数据,而栈的存取速度比堆要高很多,所以这些数据存储在栈中。 而对于引用类型的实例,则是存储在堆中的。
strong815 2015-07-12
  • 打赏
  • 举报
回复
楼主你真是。。。都不想说你了,感觉你对java啥都不懂呢。java里面只有两种:引用类型数据和基本数据类型。你说的int那个是基本数据类型。 基本数据类型和引用数据类型的引用都存在栈里,所以那个3存在栈里的。 而引用数据真正指向的数据内容存在堆里,网上有很多教材 去找找
Think_Higher 2015-07-10
  • 打赏
  • 举报
回复
好的多谢了。
S117 2015-07-10
  • 打赏
  • 举报
回复
看看《java虚拟机规范》,那里面有详细的说明
Think_Higher 2015-07-10
  • 打赏
  • 举报
回复 1
我只是想搞清楚java的底层内存方面的东西,求甚解。才能更明白,不能稀里糊涂的。
飏飏一蝶 2015-07-08
  • 打赏
  • 举报
回复
不知道 肯定有块内存区域是管理这个的 但是不需要你关心也不想你干预
Think_Higher 2015-07-08
  • 打赏
  • 举报
回复
那映射表又在哪里呢?
飏飏一蝶 2015-07-08
  • 打赏
  • 举报
回复 1
你看的是a 编译器看的是一个地址 a = 3; 系统肯定会存储3这个值并把存3这个地址返回给你 但是给你个地址你也没法记忆啊 编译器为你映射转换成a 当然肯定要映射表 有映射表肯定就需要存储空间 有点像网站访问,让你记IP是不可能的,但是记域名就简单了,中间DNS服务器负责给你转换 这个和网站访问是类似的 但是不需要你关心怎么转换怎么存储这些地址值的 告诉你你也做不了什么

50,526

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧