String s=”Hello!”; s=s+”Mary”+4;
String s=”4+3=”; s=s.concat(“7”); //concat(String str)方法专用于字符串的连接
第一行的操作创建了另一个字符串,s指向新的字符串,那第二行呢?
是否在原来的字符串后直接加上”7”,并未创建一个新串,s仍指向原来的串?

解决方案 »

  1.   

    java API
    字符串是常量;它们的值在创建之后不能改变。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享它们。
    所以你创建了一个 String 类型的对象. 想在这个串后加个东西 等于在内存中生成了一个新的字符串对象.原来的引用指向了新的字符串String str1 = "abc";
    String str2 = "def";str1 = str1+str2 ;先生成数组str1 ,又生成str2,
    然后 java生成长度为 str1+str2的新串 将abc def 加进去.
    str1 指向新生成的串
      

  2.   

    只要是String就不可以改变,改变了就指向了另外的新串了!除非是StringBuffer、StringBuilder