boolean b1 = false;
boolean b2 = true;
String s = new String(b1+""+b2);
s.replaceAll("false", "f");
s.replaceAll("true", "t");
什么都没有被替换。我仍然得到“假真”。我想将字符串的所有“false”和“true”替换为“f”和“t”。
我很确定我没有以正确的方式做这件事,这就是为什么我需要你的帮助,我们将不胜感激。
boolean b1 = false;
boolean b2 = true;
String s = new String(b1+""+b2);
s.replaceAll("false", "f");
s.replaceAll("true", "t");
什么都没有被替换。我仍然得到“假真”。我想将字符串的所有“false”和“true”替换为“f”和“t”。
我很确定我没有以正确的方式做这件事,这就是为什么我需要你的帮助,我们将不胜感激。
字符串是不可变的。当您对字符串执行任何操作时,它会创建新字符串。您需要再次将结果分配给参考
它应该是这样的 s = s.replaceAll("false", "f");
Java中的String是不可变的,这意味着String对象的值一旦创建就不会改变。
因此,方法 replaceAll()(或 String 类中的几乎所有其他方法)旨在返回一个新字符串,而不是修改旧字符串。
所以调用应该是
s = s.replaceAll("false", "f");
更多关于不变性的信息在这里
当您调用.replaceAll("false", "f") 时,您实际上并没有改变字符串。您需要将该值分配给 s ,如下所示:
s = s.replaceAll("false", "f");
System.out.println(s.replaceAll("false", "f ").replaceAll("true", "t "));
你需要这样写:
s = s.replaceAll("false", "f");
s = s.replaceAll("true", "t");
字符串是不可变的,因此一旦您声明它们,它们就无法更改。调用它s.replaceAll("false", "f");
会创建一个新的字符串对象,"f"
而不是"false"
。由于您没有将这个新对象分配给变量,因此新字符串基本上丢失了,而您的左边是原始字符串。
首先,你需要意识到它String
是不可变的。这意味着它的内容不能改变。为了获得 replaceAll() 方法的结果,您需要将返回值分配给 a String
。