黑马程序员技术交流社区

标题: String问题 [打印本页]

作者: 颜春    时间: 2013-2-27 18:01
标题: String问题
本帖最后由 颜春 于 2013-2-28 13:41 编辑

String s = new String("xyz");创建了几个String Object?
作者: 陈圳    时间: 2013-2-27 18:06
两个,new是内存地址开辟符,"xyz"是堆内存中本身就有的.
作者: 张晋瑜    时间: 2013-2-27 19:59
两个
第一个:“xyz”本身就是一个String对象,编译器为它遇到的每个字符串直接值自动创建一个String对象,这个“xyz”对象存放在常量池中
第二个:程序运行时到new时,你要创建一个内容为“xyz”的String对象,你不需要再次创建一个,而是直接用这个就可以,这样当然是为了节省空间。所以是创建一个String类型的变量s指向了常量池中的“xyz”
作者: 胥文    时间: 2013-2-27 20:44
String s = new String("xyz"),这句话在创建对象的时候调用了String的构造函数String(String s)
首先new String()的时候就创建了一个对象,然后又传了一个字符串进来,如果字符不存在就要在创建一个
String s = new String("xyz");这句话就等效于下面这两句
String s1 = "xyz";//这创建了一个对象
String = new Stirng(s1)//这里也创建了一个对象
所以是两个对象
作者: Benwolf0818    时间: 2013-2-27 21:49
两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s
作者: 刘国涛    时间: 2013-2-27 22:16
两个,new创建一个,"xyz"本身就是一个。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2