1
boolean b1 = false;
boolean b2 = true;


String s = new String(b1+""+b2);

s.replaceAll("false", "f");
s.replaceAll("true", "t");

何も置き換えられません。私はまだ「falsetrue」を取得します。文字列のすべての「false」と「true」を「f」と「t」に置き換えたいと思います。

私はそれを正しい方法でやっていないと確信しています、そしてそれが私があなたの助けを必要とする理由です、それは大いに感謝されるでしょう。

4

6 に答える 6

8

文字列は不変です。文字列に対して操作を行うと、新しい文字列が作成されます。結果を参照に再度割り当てる必要があります

それは次のようなものでなければなりません s = s.replaceAll("false", "f");

于 2012-07-23T15:09:44.713 に答える
6

Javaの文字列は不変です。つまり、一度作成されると、Stringオブジェクトの値は変更されません。

したがって、メソッドreplaceAll()(またはStringクラスの他のほとんどすべてのメソッド)は、古い文字列を変更するのではなく、新しい文字列を返すように設計されています。

したがって、呼び出しは次のように行う必要があります

s = s.replaceAll("false", "f");

不変性の詳細はこちら

于 2012-07-23T15:14:47.460 に答える
5

call.replaceAll( "false"、 "f")を呼び出す場合、実際には文字列を変更しているわけではありません。次のように、その値をsに割り当てる必要があります。

s = s.replaceAll("false", "f");
于 2012-07-23T15:10:38.993 に答える
3
System.out.println(s.replaceAll("false", "f ").replaceAll("true", "t "));
于 2012-07-23T15:12:40.960 に答える
2

あなたはそれをこのように書く必要があります:

 s =  s.replaceAll("false", "f");
 s =  s.replaceAll("true", "t");

文字列は不変であるため、一度宣言すると変更できません。これを呼び出すと、の代わりにs.replaceAll("false", "f");新しい文字列オブジェクトが作成されます。この新しいオブジェクトを変数に割り当てていなかったため、新しい文字列は基本的に失われ、元の文字列が残りました。"f""false"

于 2012-07-23T15:14:38.820 に答える
1

まず第一に、それStringが不変であることを認識する必要があります。これは、その内容を変更できないことを意味します。replaceAll()メソッドの結果を取得するには、戻り値をに割り当てる必要がありますString

于 2012-07-23T15:24:51.910 に答える