java.lang.String.replace问题的提示?

java.lang.String.replace问题的提示?,java,string,replace,Java,String,Replace,我想将要写入文件的字符串/双精度中的“.”替换为“.” 使用以下Java代码 double myDouble = myObject.getDoubleMethod(); // returns 38.1882352941176 System.out.println(myDouble); String myDoubleString = "" + myDouble; System.out.println(myDoubleString); myDoubleString.replace(".", ",

我想将要写入文件的字符串/双精度中的“.”替换为“.”

使用以下Java代码

double myDouble = myObject.getDoubleMethod(); // returns 38.1882352941176
System.out.println(myDouble);

String myDoubleString = "" + myDouble;
System.out.println(myDoubleString);

myDoubleString.replace(".", ",");
System.out.println(myDoubleString);

myDoubleString.replace('.', ',');
System.out.println(myDoubleString);
我得到以下输出

38.1882352941176
38.1882352941176
38.1882352941176
38.1882352941176
为什么replace不做它应该做的事情呢?我希望最后两行包含一个“,”


我必须做/使用其他东西吗?建议?

您需要将新值赋回变量

double myDouble = myObject.getDoubleMethod(); // returns 38.1882352941176
System.out.println(myDouble);

String myDoubleString = "" + myDouble;
System.out.println(myDoubleString);

myDoubleString = myDoubleString.replace(".", ",");
System.out.println(myDoubleString);

myDoubleString = myDoubleString.replace('.', ',');
System.out.println(myDoubleString);

未修改原始字符串。调用将返回修改后的字符串,因此需要执行以下操作:

String modded = myDoubleString.replace(".",",");
System.out.println( modded );

replace
返回一个新字符串(因为字符串在Java中是不可变的):


永远记住,字符串是不可变的。他们不能改变。如果调用的字符串方法以某种方式对其进行更改,则需要存储返回值。总是


我记得我在Uni不止几次被这件事弄得不知所措:)

更大的问题是为什么不使用代替字符串替换?

这几年来让太多的Java新手绊倒了。我重新阅读了replace的文档,它清楚地以“返回一个新字符串…”开头;-)像往常一样,问题摆在计算机面前;-)它返回新字符串的原因是字符串在Java中是不可变的。这一点很好!你的回答超越了我的问题,但解决了我基本上遇到的问题。我不知道十进制,谢谢!但是您不需要引入
newString
,因为尽管
String
对象是不可变的,但是可以更改对
String
对象的引用(如果它们不是
final
):
String newString = myDoubleString.replace(".", ",");