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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 颜春 中级黑马   /  2013-2-27 18:01  /  2167 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 颜春 于 2013-2-28 13:41 编辑

String s = new String("xyz");创建了几个String Object?

5 个回复

倒序浏览
两个,new是内存地址开辟符,"xyz"是堆内存中本身就有的.
回复 使用道具 举报
两个
第一个:“xyz”本身就是一个String对象,编译器为它遇到的每个字符串直接值自动创建一个String对象,这个“xyz”对象存放在常量池中
第二个:程序运行时到new时,你要创建一个内容为“xyz”的String对象,你不需要再次创建一个,而是直接用这个就可以,这样当然是为了节省空间。所以是创建一个String类型的变量s指向了常量池中的“xyz”
回复 使用道具 举报
String s = new String("xyz"),这句话在创建对象的时候调用了String的构造函数String(String s)
首先new String()的时候就创建了一个对象,然后又传了一个字符串进来,如果字符不存在就要在创建一个
String s = new String("xyz");这句话就等效于下面这两句
String s1 = "xyz";//这创建了一个对象
String = new Stirng(s1)//这里也创建了一个对象
所以是两个对象
回复 使用道具 举报
两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s
回复 使用道具 举报
两个,new创建一个,"xyz"本身就是一个。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马