String a=new String("abc"); 
String b=new String("abc"); 
String c="abc";
创建了几个对象
c指向谁?String a=new String("abc"); 
a="abc";
创建了几个对象

解决方案 »

  1.   

    假设你的 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.
      

  2.   

    "a "已经对应一个字符串对象, 
    String   a   =   "a "; 
    只是让变量a引用到这个对象。而 
    String   a   =   new   String( "a "); 
    以这个已有的对象 "a "为样本,构造出一个内容完全相同的另一个对象,然后让变量a引用到它 
      

  3.   

    3个对象。两个heap 一个常量池
      

  4.   

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

  5.   

    String a=new String("abc"); 
    String b=new String("abc"); 
    String c="abc";
    创建了几个对象
    c指向谁?创建了3个对象,c指向常量池的"abc"对象String a=new String("abc"); 
    a="abc";
    创建了几个对象创建了两个对象
      

  6.   

    c指向常量池的"abc"对象 这个"abc"到底是那个"abc"
      

  7.   

    我想明白String c="abc" 这个"abc"是新开辟的内存,还是引用上面的"abc"
    如果是引用
    String a=new String("abc");  
    String b=new String("abc");
    那到底引用的是那个"abc"