黑马程序员技术交流社区
标题:
String s =new String("xyz");创建了几个String Object
[打印本页]
作者:
小小6456
时间:
2014-5-18 20:57
标题:
String s =new String("xyz");创建了几个String Object
String s =new String("xyz");创建了几个String Object?二者之间有什么区别?
作者:
张斌
时间:
2014-5-18 21:52
两个或一个,”xyz”对应一个对象,这个对象放在字符串常量缓冲区,常量”xyz”不管出现多少遍,都是缓冲区中的那一个。New String每写一遍,就创建一个新的对象,它一句那个常量”xyz”对象的内容来创建出一个新String对象。如果以前就用过’xyz’,这句代表就不会创建”xyz”自己了,直接从缓冲区拿。
作者:
alax
时间:
2014-5-19 05:57
共创建了量个一个是new String所创建 一个是xyz字符串常量
作者:
铁血丹心
时间:
2014-5-19 09:06
public class StringDemo {
public static void main(String[] args) {
/*String s3 = "abc";
String s4 = new String("abc");
System.out.println(s3==s4);//false
* s3创建,在内存中只有一个对象,存在常量池中。
* s4创建,在内存中有两个对象。先在堆中开辟一个空间,调用构造函数,调用了常量池中的"abc"对象。最后堆里有一个对象,常量池中有一个对象*/
String s1 = new String("abc");
String s2 = "abc";
System.out.println(s1==s2);//false
}
}
复制代码
把String s1 = new String("abc");和String s2 = "abc";顺序倒过来,根据字符串可以共享,如果常量池中有"abc",s2就会直接使用。现在输出结果是false,说明s1的对象不在常量池中,在堆中。
作者:
张鹏宇
时间:
2014-5-19 12:04
一个吧?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2