有人可以解释以下情况吗?
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
这是因为,在 Java 中String
对象是immutable
(存储在对象中的值不能更改)。当您执行concat
or之类的操作时replace
,会在内部创建一个新对象来保存结果。
当你说
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
对于可变字符串操作,您可以使用StringBuilder
或StringBuffer
String.concat returns concatinated string which you ignored, try this
String s = "Testing";
s = s.concat("Java 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
1)在第一个你没有分配一个新的价值。
2)您第二次分配新值,例如s = s.concat(" Java 2");