曾经看到过,不太记得了,说的不对大家拍砖。
String是个特别的类。在内存中会开辟一块池放其中的值。不象其他对象那样通过指针访问。

解决方案 »

  1.   

    aa=aa+"bb";中+是连接符连接的是bb的字符串,
    如果你要结果是
    aa
    aaaa
    那么只要改成aa=aa+bb就行了
    这样你就明白了吧!!!!!!!!
      

  2.   

    在JAVA中,String类型相对比较特殊,8个基本类型是按传值方式处理,对象一般赋值按传指针方式,但String  s也是对象,却是传值方式。
      

  3.   

    在Java中,有一类对象象String, Integer, Double,Font等,只能通过构建器赋值,姑且称之为只读对象,用于Hash Map的key时非常方便。
    当 aa = aa + "bb"时,aa已经指向了新构建的对象。
      

  4.   

    System.out.println(aa);
    System.out.println(aa);是不是笔误,应该是
    System.out.println(bb);
    System.out.println(aa);
    吧如 forjie(我爱我家) 所说,String是个特殊的类。在JAVA中,String对象被认为是不可改变的。要更改String型对象所引用的字符串,只能丢弃对旧字符串的引用,代之以引用新的字符串。可以试想下面这样的过程:
      aa=new String ("aa");  //在内存中生成字符串"aa",令String对象aa指向它
      bb=aa;                 //令bb等于aa,现在两个对象都引用字符串"aa"
      aa=aa+"bb";            //试图改变对象aa所引用的字符串,于是丢弃对原字符串"aa"的引用,另外生成字符串"aabb",令aa指向新的字符串(内存)"aabb"。
     
      System.out.println(bb); //bb仍然指向"aa"
      System.out.println(aa);//aa已经指向新的字符串了说的不对的地方,请不要吝啬你的鸡蛋,尽管砸吧。    
     
      

  5.   

    allof01(我行我素) 你讲得很对!