犀利哥的哥哥的哥来帮我看下
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个对象