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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© redlake 中级黑马   /  2015-4-19 10:51  /  586 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

String s = new String("abc");怎么说这句话说创建了两个对象,一个new一个字符串对象,不是很理解,谁能给我说说。谢谢!

6 个回复

倒序浏览
你可以理解为在堆内存中开辟了2片空间,因此创建了2个对象。别太钻牛角尖,你要这样,这日子没法过了。

点评

我觉得就要钻牛角尖,把问题理解透彻  发表于 2015-4-19 22:26
回复 使用道具 举报
String 和其他变量不一样 new了一个“abc"的时候创建了一个对象
然后赋值到变量s里面 重新开辟了块空间 放进去 形成一个新的String

比如 String str = "aaa" + "bbb";  实际上创建了3个对象
所以一般推荐使用Stringbuf    比较节省资源 要使用的时候使用toString就好了
回复 使用道具 举报
燕赵之风 发表于 2015-4-19 12:55
你可以理解为在堆内存中开辟了2片空间,因此创建了2个对象。别太钻牛角尖,你要这样,这日子没法过了。 ...

:L能理解我就理解,理解不了我就记住,嘿嘿
回复 使用道具 举报
q8387811 发表于 2015-4-19 13:05
String 和其他变量不一样 new了一个“abc"的时候创建了一个对象
然后赋值到变量s里面 重新开辟了块空间 放 ...

很详细,谢谢你的回答!
回复 使用道具 举报
redlake 发表于 2015-4-19 13:45
很详细,谢谢你的回答!

不客气 , 共勉!~~~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马