常量池和内存中的堆有什么区别啊

dandongsoft 2015-01-27 09:57:14
常量池和内存中的堆有什么区别啊 ?那位大神给详细介绍下 String str=new String("abc");在内存中的创建过程?
...全文
1118 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
z_yes163 2015-02-05
  • 打赏
  • 举报
回复



常量在 方法去看图
dandongsoft 2015-01-27
  • 打赏
  • 举报
回复
常量池是在堆里面?
Inhibitory 2015-01-27
  • 打赏
  • 举报
回复
常量池的数据是放在数据段的,是不可修改的,程序加载的时候加载到内存里。
风之夜语者 2015-01-27
  • 打赏
  • 举报
回复
http://blog.csdn.net/hairetz/article/details/4141043
这个文章据说被转了很多次,可以看看。
风之夜语者 2015-01-27
  • 打赏
  • 举报
回复
网上搜索“栈和堆”,有大量解释。 推荐看黑马程序员——毕向东java基础中的第47个视频,应该在第三天的课程,课程名为概述(内存结构),里面有栈和堆的描述。
码上行动_Light 2015-01-27
  • 打赏
  • 举报
回复
引用 5 楼 sparrow00004 的回复:
我转载过一个博文,就有你说的这个问题的讲解,可以看一下: http://blog.csdn.net/sparrow00004/article/details/38760405
摘抄一段如下: String是一个特殊的包装类数据。可以用:   Java代码   String str = new String("abc");   String str = "abc";   两种的形式来创建,第一种是用new()来新建对象的,它会在存放于堆中。每调用一次就会创建一个新的对象。而第二种是先在栈中创建一个对 String类的对象引用变量str,然后通过符号引用去字符串常量池 里找有没有"abc",如果没有,则将"abc"存放进字符串常量池 ,并令str指向”abc”,如果已经有”abc” 则直接令str指向“abc”。
码上行动_Light 2015-01-27
  • 打赏
  • 举报
回复
我转载过一个博文,就有你说的这个问题的讲解,可以看一下: http://blog.csdn.net/sparrow00004/article/details/38760405

81,091

社区成员

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

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