我有基本的困惑。
String s2=new String("immutable");
System.out.println(s2.replace("able","ability"));
s2.replace("able", "abled");
System.out.println(s2);
在第一个打印语句中,它是打印不可变的,但它是不可变的,对吗?为什么这样?
和
在下一个印刷声明中,它不会被替换>欢迎任何答案。
最佳答案
System.out.println(s2.replace("able","ability"));
在上面的行中,返回并打印了一个新字符串。
因为String#replce()
返回一个新字符串,该字符串是用newChar替换此字符串中所有出现的oldChar的结果。
s2.replace("able", "abled");
它执行
replace
操作,但不将结果分配回去。因此原始String保持不变。如果分配结果,则会看到结果。
喜欢
String replacedString = s2.replace("able", "abled");
System.out.println(replacedString );
要么
s2= s2.replace("able", "abled");
System.out.println(s2);
更新:
当你写行
System.out.println(s2.replace("able","ability"));
该
s2.replace("able","ability")
解析并返回String传递给该函数。