dev*_*1ce -3 java string replace
之间有什么区别
str.replaceAll(); //1
Run Code Online (Sandbox Code Playgroud)
和
str = str.replaceAll(); //2
Run Code Online (Sandbox Code Playgroud)
当我尝试第一个时,编译器没有给出错误,但字符串根本没有改变,但第二个工作正常。第一个是做什么的?示例代码如下:
String str = "abcdefgh";
str.replaceAll("abcd", ""); //1st replacement
System.out.println(str);
str = str.replaceAll("abcd", ""); //2nd replacement
System.out.println(str);
Run Code Online (Sandbox Code Playgroud)
第一个之后的输出是
abcdefgh
Run Code Online (Sandbox Code Playgroud)
在第二个之后是
efgh
Run Code Online (Sandbox Code Playgroud)
我知道我们应该使用第二个,因为它更新但仍然不是 String 对象?我们就像为它调用 replaceAll() 方法,它应该改变它,但为什么不呢?任何想法将不胜感激。
str.replaceAll("abcd", "")不修改 source String,因为Strings 是不可变的。相反,它会创建一个新的String并返回它。这就是您必须将返回的分配String回str.