Java 当字符串是不可变的时,System.out.println(s.concat(“some string”)是如何产生的;返回更改后的值
我编写了以下代码:Java 当字符串是不可变的时,System.out.println(s.concat(“some string”)是如何产生的;返回更改后的值,java,string,immutability,Java,String,Immutability,我编写了以下代码: public static void main(String[] args) { // TODO Auto-generated method stub String s = new String("abc"); System.out.println(s.concat("def")); } 它正在返回我的输出:“abcdef” 如果字符串是不可变的,这怎么可能呢。s.concat(“def”)返回一个新的字符串实例。s引用的字符串实例保持不变 您可以添
public static void main(String[] args) {
// TODO Auto-generated method stub
String s = new String("abc");
System.out.println(s.concat("def"));
}
它正在返回我的输出:“abcdef”
如果字符串是不可变的,这怎么可能呢。s.concat(“def”)
返回一个新的字符串
实例。s
引用的字符串
实例保持不变
您可以添加另一个println
语句来亲自查看:
public static void main(String[] args) {
String s = new String("abc");
System.out.println(s.concat("def"));
System.out.println(s);
}
您还可以在concat的Javadoc中看到:
如果参数字符串的长度为0,则返回此字符串对象。否则,将返回表示字符序列的字符串对象,该字符序列是此字符串对象表示的字符序列与参数字符串表示的字符序列的串联
只有将空的
字符串
传递给此方法时,才会返回原始的字符串。它返回一个新字符串,而不是已更改的字符串
试一试
从
如果参数字符串的长度为0,则此字符串对象为
返回。否则,将创建一个新的字符串对象,表示
字符序列,是字符序列的串联
由该字符串对象和字符序列表示
由参数字符串表示
Parameters:str-连接到此字符串结尾的字符串
绳子
返回:一个字符串,表示此对象的
字符后跟字符串参数的字符
检查concat方法的实现。它返回一个新字符串。谢谢:)一些类似的问题回答得很好
public static void main(String[] args) {
String s = new String("abc");
System.out.println(s.concat("def"));
System.out.println(s);
}
public String concat(String str)
Concatenates the specified string to the end of this string.
Examples:
"cares".concat("s") returns "caress"
"to".concat("get").concat("her") returns "together"