【发布时间】:2016-08-05 22:45:28
【问题描述】:
有什么区别
str.replaceAll(); //1
和
str = str.replaceAll(); //2
当我尝试第一个时,编译器没有给出错误,但字符串根本没有改变,但第二个工作正常。第一个是做什么的? 下面的示例代码:
String str = "abcdefgh";
str.replaceAll("abcd", ""); //1st replacement
System.out.println(str);
str = str.replaceAll("abcd", ""); //2nd replacement
System.out.println(str);
第一个之后的输出是
abcdefgh
第二个之后是
efgh
我知道我们应该使用第二个,因为它会更新但仍然不是 String 对象?我们就像为它调用 replaceAll() 方法,它应该改变它,但为什么没有呢?任何想法将不胜感激。
【问题讨论】:
-
字符串是不可变的。请参阅链接的问题。
-
第一次调用完成这项工作并把结果扔掉,你读过javadoc吗?