A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

有时候是两个有时候是一个吧?

点评

创建了两个String对象,一个在常量池,一个在堆内存.  发表于 2016-8-4 22:03

17 个回复

倒序浏览
两个 一个在常量池 存了"a" 一个在堆 存了常量池 "a'的地址
回复 使用道具 举报
这是手动装箱过程,只有一个引用对象,跟String a="a" 是一样的,后者是自动装箱(自动创建对象);
回复 使用道具 举报
2个..................................
回复 使用道具 举报
赞赞赞赞赞赞赞赞赞赞赞赞赞
回复 使用道具 举报
两个,“a”作为一个常量,会存在于常量池中,new出来的对象在堆内存中,可以看作是常量池中“a”的拷贝
回复 使用道具 举报
cat73 黑马帝 2016-8-3 00:31:18
7#
我可以很肯定的告诉你,只创建了一个对象。
可以在 JVM 规范里找到相关规定。
回复 使用道具 举报
创建了两个对象  String a = new String("a")
创建了两个对象,一个是new String(  )对象,在堆内存中
一个是”a”对象,在常量池中
把 a的地址值给 new String(  )
回复 使用道具 举报
caolufo 来自手机 中级黑马 2016-8-3 00:47:30
9#
到底是几个?
回复 使用道具 举报
2个,一个在常量池中,还有一个副本再堆里面
回复 使用道具 举报
cat73 发表于 2016-8-3 00:31
我可以很肯定的告诉你,只创建了一个对象。
可以在 JVM 规范里找到相关规定。 ...

我也觉得是一个,"a" 只是一个常量对吗,, new的才是一个对象 是吗

求大神给解释一下呗
回复 使用道具 举报
我觉得8楼是正解,你们觉得呢
回复 使用道具 举报
新手报道,大哥求罩!
回复 使用道具 举报
是一个构造函数,生成一个新的对象,然后将这个新的对象的引用赋给a
回复 使用道具 举报
两个吧应该
回复 使用道具 举报
牧风 发表于 2016-8-2 23:09
两个 一个在常量池 存了"a" 一个在堆 存了常量池 "a'的地址

如果常量池之前有“a”,不就是只用创建一个对象?
回复 使用道具 举报
必须的两个  一个在"栈"内存,一个在"堆"内存.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马