String s=new String("avc")共生成几个对象?

tomjie1981 2007-11-26 10:35:34
如题!
...全文
1305 111 打赏 收藏 转发到动态 举报
写回复
用AI写文章
111 条回复
切换为时间正序
请发表友善的回复…
发表回复
codolio 2011-07-19
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 dracularking 的回复:]

新生成和存在有区别

存在两个,有一个肯定是新生成的
"avc"

new String("avc")

代表同一字符序列
new String("avc")是"avc"的拷贝副本
[/Quote]

恩,同时需要注意的是对字符串常量的限定。
haobaoipv6 2011-07-19
  • 打赏
  • 举报
回复
晕,还顶,这个问题就像看一个孕妇,一个人还是两个人?
JavaMan_KA 2011-07-19
  • 打赏
  • 举报
回复
2 个对象,一个"avc",一个是"avc"的引用
三千大千世界 2011-07-19
  • 打赏
  • 举报
回复
1个或2个
取决于在new String(“avc”)之前,在java的String常量池里有没有这个对象,没有就先创建一个对象,然后再来一个对这个对象的引用,有 的话就直接来个引用
lost_guy_in_scut 2011-07-19
  • 打赏
  • 举报
回复
顶。那么多人回答。蛋疼的人类啊。
malihom 2011-07-18
  • 打赏
  • 举报
回复
[Quote=引用 61 楼 heartraid86 的回复:]
从头看到尾,没几个人回答的非常的准确。主要错误说法有这么几类:

(1) “认为常量池中有对象”--错误,对象(或则说对象中的实例变量的存储区域)只能在堆中,常量池解析之后会存储指向堆中对象的引用。
(2) "认为栈有对象"--错误,JVM管理的内存有一块区域叫做Java栈,是为了方法运行的时候开辟必要的局部数据区和操作数栈的。这个里面存储的也是指向堆中的对象引用。不可能有对象本身。
(……
[/Quote]
从头看到尾,几乎所有的人都没有正确的解释,看到这个眼前一亮,真希望大伙能够认真看一下,不要觉得是就是了,竟然栈都有内存了,无语了……
「已注销」 2011-07-18
  • 打赏
  • 举报
回复
18楼的完全正确。
东部小飞侠 2011-07-18
  • 打赏
  • 举报
回复
1个或者2个 这个问题百度上多了去了
meran 2011-07-18
  • 打赏
  • 举报
回复
[Quote=引用 61 楼 heartraid86 的回复:]
从头看到尾,没几个人回答的非常的准确。主要错误说法有这么几类:

(1) “认为常量池中有对象”--错误,对象(或则说对象中的实例变量的存储区域)只能在堆中,常量池解析之后会存储指向堆中对象的引用。
(2) "认为栈有对象"--错误,JVM管理的内存有一块区域叫做Java栈,是为了方法运行的时候开辟必要的局部数据区和操作数栈的。这个里面存储的也是指向堆中的对象引用。不可能有对象本身。
(……
[/Quote]
正解
pejayshine 2010-06-30
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 kangyanboy 的回复:]
2 个,一个"avc",一个指向"avc"的引用!
[/Quote]

我认为一个是 在常量池中,一个在堆里, 引用只是在栈上分了空间的变量,不是对象
xtm1206571089 2010-06-29
  • 打赏
  • 举报
回复
一个堆中 一个栈中
fuerxi 2010-06-29
  • 打赏
  • 举报
回复
2 个,一个"avc",一个指向"avc"的引用!
lee80705041 2010-06-29
  • 打赏
  • 举报
回复
61楼的回答很精确啊,
一个是java虚拟机对字符串"avc"创建了一个inner对象
还有就是在堆中创建了一个inner对象的副本new String("avc")对象

s 只是一个引用 不是一个对象
lee80705041 2010-06-29
  • 打赏
  • 举报
回复
请问有100楼吗?
lovepu 2010-06-28
  • 打赏
  • 举报
回复
2个对象!
jinianjun 2010-06-27
  • 打赏
  • 举报
回复
我晕,应该是两个
fly2749 2010-06-27
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 haiyingyih 的回复:]
我是新手,刚看一楼的回答,我觉得我肯定知道是2个....但是看到最后,我发现我不知道到底几个了...!
[/Quote]
呵呵
郭梧悠 2010-06-27
  • 打赏
  • 举报
回复
楼主晕了
lgh1117 2010-06-27
  • 打赏
  • 举报
回复
上面的都说的很对,就是两个
sequanyining 2010-06-27
  • 打赏
  • 举报
回复
两个 s在堆区 avc在字符串池 s是指向avc的引用
加载更多回复(91)

62,623

社区成员

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

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