文字列をスペースを含むintとcharで連結しようとしていますが、連結されていません。理由は何ですか?
private String messages;
Random r = new Random();
int random = r.nextInt(1000);
char ch='s';
messages.concat(String.valueOf(random));
messages.concat(" ");
messages.concat(String.valueOf(ch));
messages.concat(" ");
concat
は呼び出し文字列を変更しませんが、新しい文字列を返します。
結果の各String
を次のように結果に割り当てることができます。-
messages = messages.concat(String.valueOf(random));
messages = messages.concat(" ");
messages = messages.concat(String.valueOf(ch));
messages = messages.concat(" ");
または、オーバーロードされた演算子+
を使用します
messages = String.valueOf(random) + " " + String.valueOf(ch) + " ";
Strings
は不変です。他の回答に示されているように、String
連結を使用して結果を追加するか、 StringBuilder
を使用できます。
StringBuilder messages = new StringBuilder();
messages.append(String.valueOf(random));
messages.append(" ");
messages.append(String.valueOf(ch));
messages.append(" ");
Javaで2つの文字列を連結するにはどうすればよいですか? をご覧ください。
編集:(String
の先頭に挿入する)
messages.insert(0, "newstring");
より良い方法は:
Random r = new Random();
int random = r.nextInt(1000);
StringBuilder str = new StringBuilder(String.valueOf(random));
str.append("s")
str.append(String.valueOf(random))
str.append(" ");
str.append(String.valueOf(ch));
messages += String.valueOf(random) + " " + String.valueOf(ch) + " ";
char ch='s';
messages = messages.concat(String.valueOf(random));
messages = messages.concat(" ");
messages = messages.concat(String.valueOf(ch));
messages = messages.concat(" ");
文字列は再割り当てする必要があります。文字列オブジェクトを編集するときは、文字列定数プールに新しい文字列オブジェクトを作成しますが、この新しい文字列値を参照変数に割り当てていないため、変更をに再割り当てする必要があります。それらを作成したのと同じ参照変数