19

このコード:

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」が連結されていないのはなぜですか?

4

6 に答える 6

49

文字列は不変です。つまり、Javaで文字列を変更することはできません。concat()は、連結された新しい文字列を返します。

String s = "TEST";
String s2 = s.trim();
String s3 = s.concat("ING");

System.out.println("S = "+s);
System.out.println("S2 = "+s2);
System.out.println("S3 = "+s3);
于 2010-05-12T12:41:11.560 に答える
10

Stringは不変であるため、クラスにはオブジェクト自体Stringのコンテンツを変更するメソッドが含まれていません。Stringこのconcat()メソッドはString、操作の結果を含むnewを返します。これの代わりに:

s.concat("ING");

これを試して:

s = s.concat("ING");
于 2010-05-12T12:40:45.117 に答える
3

私はあなたがしたいことは次のとおりだと思います:

s2 = s.concat("ING");

concat関数は、文字列sを変更せず、引数が追加されたsを返すだけです。

于 2010-05-12T12:42:02.327 に答える
3

concat文字列を返すので、基本的には、返すものを保存せずにconcatを呼び出しています。これを試して:

String s = "Hello";
String str = s.concat(" World");
System.out.println(s);
System.out.println(str);

印刷する必要があります:

Hello
Hello World
于 2010-05-12T12:44:35.213 に答える
2

.concat()メソッドは、新しい連結値を返します。そこでs.concat("ING")->これは戻り値「Testing」を与えます。ただし、宣言された変数で受け取る必要があります。

そうすると、「s」の値がs=s.concat("ING");「TESTING」に変わります。

于 2014-05-28T02:53:48.247 に答える
0

concat()が任意のString objで呼び出されると、Stringは不変であるため、

文字列s="abc"; 新しいStringobjは、sによってStringpoolrefに作成されます

s = s.concat( "def"); ここで、valabcdefを持つもう1つのStringobjが作成され、sによって参照されます。

于 2014-03-18T09:05:36.113 に答える