2 z961652881 z961652881 于 2017.01.06 12:05 提问

replace,replaceAll都不生效啊,jdk1.8

String aa = "aa";

aa.replace("a", "b");
System.out.println(aa);
aa.replace("b", "a");
System.out.println(aa);

aa.replaceAll("a", "b");
System.out.println(aa);
aa.replaceAll("b", "a");
System.out.println(aa);输出结果都是aa

10个回答

bdmh
bdmh   Ds   Rxr 2017.01.06 12:27

String aa = aa.replace("a", "b");

HeavenAndHell
HeavenAndHell   2017.01.06 12:18

因為 String是不可改變的 你要用新建一個變量去接受他

sun1021873926
sun1021873926   Ds   Rxr 2017.01.06 12:35

replace,replaceAll函数,是不会改变其调用对象本身的,只是其返回值把相应的字符串或字符替换掉。

wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2017.01.06 13:40

生效了,但是Java的String是不可变类型,replace方法只会返回一下新的字符串对象,而原来的字符串的值是不会改变的。
你可以直接输出System.out.println(aa.replace("a", "b"))或者定义一个新变量指向replace返回的结果。

Shining_huifeidezhu
Shining_huifeidezhu   2017.01.06 14:43

replace()和 replaceAll() 方法不会改变调用方法的string对象本身,而是返回一个 替换后的string 结果;
所以可以 重新使用一个string 变量去接收返回值;
常用用法:
String str1=“aab”;
String str2 = str1.replace("a", "b");
syso(str2);
结果:bbb;

yanghao0
yanghao0   2017.01.06 15:11

aa = aa.replace("a", "b");

yanghao0
yanghao0   2017.01.06 15:12

aa = aa.replace("a", "b");
你打印的是aa,需要重新指向

Dreamer_good
Dreamer_good   2017.01.06 15:29

你所有的replace后都没重新赋值

xionglangs
xionglangs   Rxr 2017.01.07 01:12

你只是执行了替换操作,但没有进行重新赋值,所以aa的值一直没变。

gao332706585
gao332706585   2017.01.07 11:55

你代码改成这样就好了
aa = aa.replace(“a”,“b”);

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!