我正在尝试使用String.replace(oldChar,newChar),但这将返回一个Changed字符串。例:
String tempString= "abc is very easy";
String replacedString=tempString.replace("very","not");
System.out.println("replacedString is "+replacedString);
System.out.println("tempString is "+tempString);
Run Code Online (Sandbox Code Playgroud)
输出:
replacedString is abc is not easy
tempString is abc is very easy
Run Code Online (Sandbox Code Playgroud)
所以我的问题是有什么方法可以替换字符串而不将其存储在另一个字符串中。
我想要输出
String tempString= "abc is very easy";
tempString.replace("very","not");
System.out.println("tempString is "+tempString);
Run Code Online (Sandbox Code Playgroud)
如
tempString is abc is not easy.
Run Code Online (Sandbox Code Playgroud)
通过使用替换功能。
字符串是不可变的。他们无法改变。您对它们执行的任何操作都将导致“新”字符串,该字符串由您对其调用的方法返回。
阅读有关它的更多信息:Java中字符串的不变性
因此,在您的示例中,如果要更改字符串,则需要覆盖引用原始字符串的变量,以指向新的字符串值。
String tempString= "abc is very easy";
tempString = tempString.replace("very","not");
System.out.println("tempString is "+tempString);
Run Code Online (Sandbox Code Playgroud)
供您理解的内幕:
将字符串“ abc非常容易”
分配给内存地址0x03333 将地址0x03333 分配给变量tempString
调用方法替换,在地址0x05555处创建新的修改后的字符串
将地址0x05555分配给
temp字符串变量从方法替换返回temp字符串变量
将地址从temp字符串变量分配给变量tempString
来自tempString的地址现在为0x05555。
如果0x03333的字符串不在代码定义的字符串和StringPool中,则地址0x03333的字符串将被垃圾回收。
| 归档时间: |
|
| 查看次数: |
135 次 |
| 最近记录: |