免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2801 | 回复: 9
打印 上一主题 下一主题

String a = new String("string");生成了几个对象? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-04-24 17:10 |只看该作者 |倒序浏览
明白的进来讲一下。。

论坛徽章:
0
2 [报告]
发表于 2006-04-24 17:14 |只看该作者
我能认识到的是两个对象

“string”一个
new String(“string”)又一个

论坛徽章:
0
3 [报告]
发表于 2006-04-24 17:24 |只看该作者
小弟愚见 也是2个!

论坛徽章:
0
4 [报告]
发表于 2006-04-24 23:28 |只看该作者
个人觉得讨论这个没太大必要。

关注一下好了

[ 本帖最后由 w.m 于 2006-4-24 23:37 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2006-04-25 07:18 |只看该作者
当然是两个了,一个对像的引用和一个对象的实体!

论坛徽章:
0
6 [报告]
发表于 2006-04-25 09:03 |只看该作者
隐约记得好像哪里看过是3个

论坛徽章:
0
7 [报告]
发表于 2006-04-25 09:08 |只看该作者
不是一个吗?

论坛徽章:
0
8 [报告]
发表于 2006-04-25 09:15 |只看该作者
http://www.matrix.org.cn/resource/article/44/44114_java.html
在pool(pool of literal strings)中产生对象"string",若已存在则不产生
将pool中的对象复制一份放到heap中,并且把heap中的这个对象的引用交给s持有
s仅仅是一个引用变量,它不是对象。
所以是共产生1个或者2个对象

由于字符串对象的大量使用[它是一个对象,一般而言对象总是在heap分配内存],Java中为了节省内存空间和运行时间[如比较字符串时,==比equals()快],在编译阶段就把所有的字符串文字放到一个文字池[pool of literal strings]中,而运行时文字池成为常量池的一部分。文字池的好处,就是该池中所有相同的字符串常量被合并,只占用一个空间。

[ 本帖最后由 fxf_china 于 2006-4-25 09:17 编辑 ]

论坛徽章:
0
9 [报告]
发表于 2006-04-25 13:26 |只看该作者
2个

论坛徽章:
0
10 [报告]
发表于 2006-04-25 20:42 |只看该作者

晕忽忽!!

这样的问题真的没必要讨论了,不过你们也不要误导小孩子啊,老实告诉你吧,是两个!这个是正确答案!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP