Sav*_*avi 2 java string immutability
我写了以下代码:
public static void main(String[] args) {
// TODO Auto-generated method stub
String s = new String("abc");
System.out.println(s.concat("def"));
}
Run Code Online (Sandbox Code Playgroud)
它正在返回输出:"abcdef"
如果字符串是不可变的,这怎么可能.
s.concat("def")返回一个新String实例.String引用的实例s保持不变.
您可以添加另一个println语句来自己查看:
public static void main(String[] args) {
String s = new String("abc");
System.out.println(s.concat("def"));
System.out.println(s);
}
Run Code Online (Sandbox Code Playgroud)
您还可以在Javadoc中看到concat:
如果参数字符串的长度为0,则返回此String对象.否则,返回一个String对象,该对象表示一个字符序列,该字符序列是此String对象表示的字符序列与参数字符串表示的字符序列的串联.
String仅当您String向此方法传递空值时才返回原始文件.