string a="b";a、b分别存放在jvm的哪个区?

wangsufu77 2018-12-17 11:06:04
class{
private string a="a";
}

a、b分别存放在jvm的哪个区?为什么
...全文
924 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tony-老师 2018-12-30
  • 打赏
  • 举报
回复
看我这篇文章我用#CSDN#这个app发现了有技术含量的博客,小伙伴们求同去《老况说 - 从内到外剖析String类以及使用String时的性能优化》, 一起来围观吧 https://blog.csdn.net/u014294681/article/details/85169691
程序员苍何 2018-12-23
  • 打赏
  • 举报
回复
A在堆内存,b在字符串常量池
Colin569 2018-12-22
  • 打赏
  • 举报
回复
a 是一个成员变量在堆里 局部变量才在栈里 字符串b是String类型的放在常量池里边
tizzybepeacejoy 2018-12-21
  • 打赏
  • 举报
回复
a栈区,b常量池
WANTED_Shanks 2018-12-20
  • 打赏
  • 举报
回复
其实你只有记住堆是存放线程共享的,栈是存放线程独有的,自己就可以去分析了
ruofeiert 2018-12-19
  • 打赏
  • 举报
回复
引用 3 楼 ruofeiert的回复:
a放在栈中,jdk1.7之前,b放在方法区常量池,1.7之后,放在堆中
百度了下,jdk1.8常量池放在元空间里面,和堆相独立。
ruofeiert 2018-12-19
  • 打赏
  • 举报
回复
a放在栈中,jdk1.7之前,b放在方法区常量池,1.7之后,放在堆中
天涯若风 2018-12-18
  • 打赏
  • 举报
回复
a字面量存放在栈中, b存放在常量池, a持有对b的引用
别闹腰不好 2018-12-18
  • 打赏
  • 举报
回复
b 放在方法区常量池,因为b是一个常量,常量池在方法区里。 a 放在堆里,因为a是对象的一个属性,每个对象都有一个a属性,类的实例对象放在堆里。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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