このコード:
String s = "TEST";
String s2 = s.trim();
s.concat("ING");
System.out.println("S = "+s);
System.out.println("S2 = "+s2);
結果は次のようになります。
S = TEST
S2 = TEST
BUILD SUCCESSFUL (total time: 0 seconds)
「TEST」と「ING」が連結されていないのはなぜですか?
String
は不変であるため、クラスにはオブジェクト自体String
のコンテンツを変更するメソッドが含まれていません。String
このconcat()
メソッドはString
、操作の結果を含むnewを返します。これの代わりに:
s.concat("ING");
これを試して:
s = s.concat("ING");
私はあなたがしたいことは次のとおりだと思います:
s2 = s.concat("ING");
concat関数は、文字列sを変更せず、引数が追加されたsを返すだけです。
concat
文字列を返すので、基本的には、返すものを保存せずにconcatを呼び出しています。これを試して:
String s = "Hello";
String str = s.concat(" World");
System.out.println(s);
System.out.println(str);
印刷する必要があります:
Hello
Hello World
.concat()
メソッドは、新しい連結値を返します。そこでs.concat("ING")
->これは戻り値「Testing」を与えます。ただし、宣言された変数で受け取る必要があります。
そうすると、「s」の値がs=s.concat("ING");
「TESTING」に変わります。
concat()が任意のString objで呼び出されると、Stringは不変であるため、
文字列s="abc"; 新しいStringobjは、sによってStringpoolrefに作成されます
s = s.concat( "def"); ここで、valabcdefを持つもう1つのStringobjが作成され、sによって参照されます。