日期:2014-05-20  浏览次数:20579 次

犀利哥的哥哥的哥来帮我看下
String a=new String("abc"); 
String b=new String("abc"); 
String c="abc";
创建了几个对象
c指向谁?

String a=new String("abc"); 
a="abc";
创建了几个对象


------解决方案--------------------
假设你的 neme的内存地址为 100
this.name=neme。那么name的值就会指向内存中100那个地方。
this.name=new Striing (neme);系统会重新开辟一块内存,假设地址为200.那么此时你的name的值就会指向内存中200那个地方。
字符串的字面值是一样的 但是内存地址不一样。
String s1 ="a";
String s2 = s1;
String s3 =new String(s1);
此时 s1==s2 true; s1==s3 false;
但是如果使用 s1.equals(s2), s1.equals(s3). 都是 true.
------解决方案--------------------
"a "已经对应一个字符串对象, 
String a = "a "; 
只是让变量a引用到这个对象。而 
String a = new String( "a "); 
以这个已有的对象 "a "为样本,构造出一个内容完全相同的另一个对象,然后让变量a引用到它
------解决方案--------------------
3个对象。两个heap 一个常量池
------解决方案--------------------
String a=new String("abc");
String b=new String("abc");
String c="abc";
创建了几个对象


创建了5个对象




String a=new String("abc");
a="abc";
创建了2个对象