誰かが次のシナリオを説明できますか?
String s = "Testing";
s.concat("Java 1");
System.out.println(s);
s = s.concat(" Java 2");
System.out.println(s);
上記の出力は次のとおりです。
Testing
Testing Java 2
誰かが次のシナリオを説明できますか?
String s = "Testing";
s.concat("Java 1");
System.out.println(s);
s = s.concat(" Java 2");
System.out.println(s);
上記の出力は次のとおりです。
Testing
Testing Java 2
これは、JavaString
オブジェクトではimmutable
(オブジェクトに格納されている値を変更できない) ためです。concat
またはなどの操作を実行replace
すると、結果を保持するために内部的に新しいオブジェクトが作成されます。
あなたが言ったとき
String s = "Testing";
s.concat("Java 1"); // this returns a new String which is "TestingJava 1"
System.out.println(s);
このconcat
メソッドは、プログラムによって保存されなかったnewを生成しました。 String
new を返す理由は、java のクラスの不変の動作をString
示しています。String
変更可能な文字列操作の場合、StringBuilder
またはを使用できますStringBuffer
String.concat は、無視した連結文字列を返します。これを試してください
String s = "Testing";
s = s.concat("Java 1");
ドキュメントを読む:
引数文字列の長さが 0 の場合、この String オブジェクトが返されます。それ以外の場合は、この String オブジェクトによって表される文字シーケンスと引数 string によって表される文字シーケンスを連結した文字シーケンスを表す、新しい String オブジェクトが作成されます。
あなたs.concat("Java 1");
の新しいstring