A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 闫玉泉 于 2012-2-27 17:56 编辑

哪两个String Object

6 个回复

倒序浏览
相当于 String s = new String("xyz"); 和 String ss = "xyz";   也就是说他们在内存的地址不同 所以s==ss 是false  可是他们的值是相同的  s.equals(ss)  是 true的    希望你能看懂  
回复 使用道具 举报
new String("xyz"); //这个表达式创建一个隐含的对象
String s ; //这个表达式创建一个对象s,就把上面创建对象的地址赋值对象s
回复 使用道具 举报
String s=new String("xyz"); 你的分成2段来看,
首先有个object s=null, 然后new String("xyz")有创建了个object,然后把这个object附加到前面的object上
实际上应该是new String("xyz"); String s="xyz";
这样就应该懂了。
回复 使用道具 举报
常量池中只可能只有一个“xyz”,但是堆中可能有多个,因为你这里用了new String来强制在堆中再创建了一个对象,所以是两个;如果是String s= "xyz"这样的,s这个引用就会直接指向常量池的"xyz",而不会是指向你在堆中创建的“xyz”。
回复 使用道具 举报
一个是字符串字面量"xyz"所对应的、驻留(intern)在一个全局共享的字符串常量池中的实例,另一个是通过new String(String)创建并初始化的、内容与"xyz"相同的实例
回复 使用道具 举报
仵先进 发表于 2012-2-27 10:05
new String("xyz"); //这个表达式创建一个隐含的对象
String s ; //这个表达式创建一个对象s,就把上面创建 ...

后面应该是赋值吧 赋值完临时隐含的对象会自己消失吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马