请高手帮帮忙啊! 我对内存问题有点迷惑,在JAVA中!

xiaoxongbeijing 2008-04-15 06:41:28
请问 当我创建一个String 象是它是在那块内存中分配的? 是栈还是堆还是别得啊?
例如:
String str = "I LOVE you";是怎样分配内存得,在哪啊?

谢谢! 如果能吧程序内存分配,详细写下那更好。
...全文
177 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Fenglee2008 2008-04-15
  • 打赏
  • 举报
回复
4楼基本上是正解!
云上飞翔 2008-04-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 cl55 的回复:]
你的String str = "I LOVE you";写在什么地方? 否则不能确定

比如在method里就应该在栈上,做为member就不会在栈上。
[/Quote]
答:能确定。在所谓的常量池中。可以粗糙地认为,是在代码区中。另外,程序中所有的 "I LOVE you"(比如出现了100次),则只有一个"I LOVE you"对象(其实就是一个字节块而已)放在常量池中。其它的99个都是使用的同一个。无论在哪儿,使用new String(...)时,才在堆中分配空间。

以上仅供你参考
cl55 2008-04-15
  • 打赏
  • 举报
回复
你的String str = "I LOVE you";写在什么地方? 否则不能确定。

比如在method里就应该在栈上,做为member就不会在栈上。
richard_2010 2008-04-15
  • 打赏
  • 举报
回复
补充1L,如果这样创建:String s = new String("I love this game!");
则在堆中创建
valen_jia 2008-04-15
  • 打赏
  • 举报
回复
在串池中创建,串池是在内存在不是堆也不是栈的地方,另外开的区域

62,623

社区成员

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

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