1

有人可以解释以下情况吗?

String s = "Testing";
s.concat("Java 1");
System.out.println(s);
s = s.concat(" Java 2");
System.out.println(s);

上面的输出是:

Testing
Testing Java 2
4

5 回答 5

7

这是因为,在 Java 中String对象是immutable(存储在对象中的值不能更改)。当您执行concator之类的操作时replace,会在内部创建一个新对象来保存结果。

于 2013-05-02T08:42:09.060 回答
3

当你说

String s = "Testing";
s.concat("Java 1"); // this returns a new String which is "TestingJava 1"
System.out.println(s);

concat方法产生了一个 String的,它没有被您的程序存储。返回 new 的原因String表明java 中类的不可变行为。String

对于可变字符串操作,您可以使用StringBuilderStringBuffer

于 2013-05-02T08:46:13.190 回答
1

String.concat returns concatinated string which you ignored, try this

String s = "Testing";
s = s.concat("Java 1");
于 2013-05-02T08:43:56.537 回答
1

Read docs:

the length of the argument string is 0, then this String object is returned. Otherwise, a new String object is created, representing a character sequence that is the concatenation of the character sequence represented by this String object and the character sequence represented by the argument string.

your s.concat("Java 1"); returning a new string

于 2013-05-02T08:47:31.727 回答
1

1)在第一个你没有分配一个新的价值。
2)您第二次分配新值,例如s = s.concat(" Java 2");

于 2013-05-02T08:50:33.140 回答