黑马程序员技术交流社区
标题:
为什么String s=new String("xyz");创建了2个String Object
[打印本页]
作者:
闫玉泉
时间:
2012-2-27 08:30
标题:
为什么String s=new String("xyz");创建了2个String Object
本帖最后由 闫玉泉 于 2012-2-27 17:56 编辑
哪两个String Object
作者:
b_boywindy
时间:
2012-2-27 09:49
相当于 String s = new String("xyz"); 和 String ss = "xyz"; 也就是说他们在内存的地址不同 所以s==ss 是false 可是他们的值是相同的 s.equals(ss) 是 true的 希望你能看懂
作者:
仵先进
时间:
2012-2-27 10:05
new String("xyz"); //这个表达式创建一个隐含的对象
String s ; //这个表达式创建一个对象s,就把上面创建对象的地址赋值对象s
作者:
雷楚光
时间:
2012-2-27 10:38
String s=new String("xyz"); 你的分成2段来看,
首先有个object s=null, 然后new String("xyz")有创建了个object,然后把这个object附加到前面的object上
实际上应该是new String("xyz"); String s="xyz";
这样就应该懂了。
作者:
李会启
时间:
2012-2-27 12:37
常量池中只可能只有一个“xyz”,但是堆中可能有多个,因为你这里用了new String来强制在堆中再创建了一个对象,所以是两个;如果是String s= "xyz"这样的,s这个引用就会直接指向常量池的"xyz",而不会是指向你在堆中创建的“xyz”。
作者:
夕阳┄漫步ぎ
时间:
2012-2-27 12:47
一个是字符串字面量"xyz"所对应的、驻留(intern)在一个全局共享的字符串常量池中的实例,另一个是通过new String(String)创建并初始化的、内容与"xyz"相同的实例
作者:
泮和顺
时间:
2012-2-27 13:09
仵先进 发表于 2012-2-27 10:05
new String("xyz"); //这个表达式创建一个隐含的对象
String s ; //这个表达式创建一个对象s,就把上面创建 ...
后面应该是赋值吧 赋值完临时隐含的对象会自己消失吧
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2