字符串的保存位置

bigname22 2016-07-27 06:25:12
java中new String("abc")中abc自动保存在常量池中还是堆中?麻烦说详细点。感激不尽
...全文
222 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
铁匠梁老师 2016-07-30
  • 打赏
  • 举报
回复
不用new直接=“abc” 即可 cn userPassword fullName groupName description accValidFlag
soapyuki 2016-07-30
  • 打赏
  • 举报
回复
楼上正解,不同版本有不同的解释。。详情见http://blog.csdn.net/fan2012huan/article/details/50915077
tatakautsubasa 2016-07-29
  • 打赏
  • 举报
回复
引用 2 楼 bigname22 的回复:
“abc”不就是一个对象吗?而且现在的堆里到底存的是什么?今天老师举例的时候说这样存的字符串还是放在常量池里,但我以前看过张孝祥老师的视频里说的这种声明方式是存在堆里,要使用intern()方法手动放入常量池。所以今天被这个老师这么一说就蒙逼了,不知道哪个对哪个错。
是这样,不同版本的JDK可能对这个处理不同,将来再出的JDK也可能改变对这个的处理,要不说得不断学习呢,不然你学到的知识不仅是在将来有没用的问题,还很可能是错的…… 至于到底哪个对,我也不知道,因为不同JDK的处理不同,所以网上的信息,书上写的,以及大家知道的都是矛盾的,怎么说的都有。要想知道详细的真实情况,或许你得给openjdk开发组发邮件了。
zoeg 2016-07-29
  • 打赏
  • 举报
回复
这种问题的讨论需要设立一个大前提:基于某某虚拟机的某某版本的某某指定运行参数!
bigname22 2016-07-27
  • 打赏
  • 举报
回复
“abc”不就是一个对象吗?而且现在的堆里到底存的是什么?今天老师举例的时候说这样存的字符串还是放在常量池里,但我以前看过张孝祥老师的视频里说的这种声明方式是存在堆里,要使用intern()方法手动放入常量池。所以今天被这个老师这么一说就蒙逼了,不知道哪个对哪个错。
anakin_feng 2016-07-27
  • 打赏
  • 举报
回复
abc会放在常量池中,但是你还new String()这里会有一个String对象放在堆中

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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