黑马程序员技术交流社区
标题:
一个String的问题,求解答
[打印本页]
作者:
张利强
时间:
2014-11-12 22:48
标题:
一个String的问题,求解答
String s1 = “abc”;String s2 = new String(“abc”);
为啥创建s1的时候只有一个对象,而创建s2的时候会产生两个对象呢?
作者:
nuddlesW
时间:
2014-11-13 08:31
对于第一种方式· java有一个字符串缓冲区 你新建一个的时候它会先找缓冲区里有没有这个字符串 如果有 直接返回引用 没有就在里面新建 第二种方式 新建一个 它首先也会去缓冲区里边查找 不管有没有 它都会在堆里新建一个 如果缓冲区里面没有 则在缓冲区里面也新建一个· 例如string s=“tt” string s1=“tt” s等于s1 而 string s=new string(“ss”) string s1=new string(“ss”) s不等于s1
作者:
M_______r
时间:
2014-11-13 16:22
第二句话,首先看常量池中有没有"abc"字符串 , 没有就在常量池中创建一个"abc",然后经过new,在堆内存中通过常量池中的字符串"abc"复制一份到堆中然后将堆中此字符串的地址值赋给s2,所以创建了两对象一个在堆中 一个在常量池中
作者:
桃华月禅
时间:
2014-11-13 16:27
第二个说的只是把【“abc”】这个对象赋值给新对象s2而已
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2