黑马程序员技术交流社区

标题: String [打印本页]

作者: 晴天_雨天    时间: 2014-3-12 09:33
标题: String
为什么{String s = new String("xyz");}创建了两个对象?其他类型的数据能这样创建吗,也是创建了两个对象吗?
作者: 老貓钓鱼    时间: 2014-3-12 09:39
因为“xyz” 本身就是一个对象
作者: 文江江    时间: 2014-3-12 09:47
1、”xyz”对应一个对象,这个对象放在字符串常量缓冲区,常量”xyz”不管出现多少遍,都是缓冲区中的那一个。New String每写一遍,就创建一个新的对象,它一句那个常量”xyz”对象的内容来创建出一个新String对象。
2、基本数据类型包括byte、int、char、long、float、double、boolean和short。
java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类
作者: 一年_Hei    时间: 2014-3-12 10:37
因为"xyz"就是一个字符串对象,然后new String()又创建了一个字符串对象。就等于2个。其中"xyz"对象是在常量池中的,而new出的String是在堆内存中的
作者: syusikoku    时间: 2014-3-12 16:04
"xyz”是一个匿名对象,在创建的时候,它会在堆内存中开辟一个内存空间,但是只要使用到了new 它就会在堆内存中开辟一个内存空间,这个空间所对应的数据也是"xyz",匿名对象的那个内存空间它等待垃圾回收处理。而真正在使用的时候,是使用的new时开辟的那个内存空间。




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