这话是从哪说的,用了这么多String类型,如果竟然不能修改,还怎么用啊

解决方案 »

  1.   

    str = str + "HIJK";
    可能被解释为
    str = new StringBuffer().append(str).append("HIJK").toString()下一句同理
      

  2.   

    你先明白内存中的字符串以及指向这些字符串的引用变量。
    String str ="ABCDEFG";
    str = str + "HIJK";
    这个时候str已经没有指向"ABCDEFG"了,指向新的字符串"ABCDEFGHIJK"。
    使用的内存地址都不同的。
      

  3.   

    String 对象被创建后是不能被改变的。
    你上面程序只看到表面。每次需要改变字符串的时候都要创建一个新的String
    对象来保存新的内容。原始的字符串不变。
    其实改变的是STring引用的变量指向另外的String对象。
    正如楼上所说,StringBuffer包含创建后可被改变的字符串。
      

  4.   

    String还是final的呢.
    因为它是如此重要的一个类.
    创建后就不能修改.
      

  5.   

    string实力是不能定长的,一旦实力后,长度是不可变的,既不可修改。
    但是如下:
    String s="dd";
    s=s+"a";
    其实是把s指想了新的地址。
      

  6.   

    String s = "aa";
    s = s + "bb";
    s结果是:aabb
    s的地址已经改变,不是原先初始化的地址。
    String对象每执行一个‘+’操作,都需要new String一次,
    所以对String对象进行‘+’操作时效率非常的低,
    所以对于字符串的相加不要用‘+’,用字符串的连接