String s1 = "ABC";
s1.replace("ABC","abc");
print(s1); // prints ABC as output
s1 = s1.replace("ABC","abc");
print(s1); //prints abc
两个替换语句之间有什么区别?
调用第一个替换语句时内部会发生什么?
答案 0 :(得分:5)
String.replace(CharSequence first, CharSequence second)返回一个新的String引用,这就是输出不同的原因。
在第一个替换行中,您没有将结果字符串分配给任何内容,而在第二行中,您将s1
的引用替换为替换结果。< / p>
答案 1 :(得分:2)
s1.replace("ABC","abc");
不会替换s1
。它给出了替换字符串的输出。
$s2 = s1.replace("ABC","abc");;
print($s1); // prints ABC
print ($s2); // prints abc
答案 2 :(得分:0)
当你s1.replace("ABC", "abc")
想象在那个地方创建新的字符串abc而不是分配给任何东西。但是使用s1=s1.replace("ABC", "abc")
,您可以创建新的字符串abc并将其分配给替换旧值的s1变量。
答案 3 :(得分:0)
字符串是不可变的。这意味着不会直接对它们进行更改,而是创建字符串的副本并更改它,并返回更改后的引用。如果您不接受新引用,您将发现旧字符串不变。
答案 4 :(得分:0)
阅读API和Java教程......不能改变字符串。这意味着它的所有方法都将返回一个新对象,您的引用仍将指向旧对象。要将退货分配给参考,您必须按
中的说明进行分配s1 = s1.replace("ABC","abc");
小心!相当棘手;)
如果你要经常更改字符串,请改用StringBuffer ...你的追加,替换等在变量引用的对象中有效。
答案 5 :(得分:0)
String.replace()
返回一个新字符串,该字符串是用newChar替换此字符串中所有出现的oldChar。