字符串连接中 string.concat 和 + 运算符之间的区别[重复]

Posted

技术标签:

【中文标题】字符串连接中 string.concat 和 + 运算符之间的区别[重复]【英文标题】:Difference between string.concat and the + operator in string concatenation [duplicate] 【发布时间】:2018-11-10 14:59:25 【问题描述】:

(这个问题可能是重复的,但我真的不明白其他答案)

你有以下代码:

String str ="football";
str.concat(" game");
System.out.println(str); // it prints football

但是使用这段代码:

String str ="football";
str = str + " game";
System.out.println(str); // it prints football game

那么有什么区别以及到底发生了什么?

【问题讨论】:

您没有将str.concat(" game"); 分配给变量,因此str 仍然具有其原始值。 字符串是不可变的,所以你必须将str.concat(" game"); 赋值给一个变量 【参考方案1】:

str.concat(" game");str + " game"; 含义相同。如果您不将结果分配回某处,它就会丢失。你需要做的:

str = str.concat(" game");

【讨论】:

那么到底发生了什么事情呢? : str.concat(" game") 创建了一个新的字符串对象 "football game" 但它并没有改变 str 引用,str 仍然引用 "football" @BaselQarabash 是的【参考方案2】:

'concat' 函数是不可变的,所以它的结果必须放在一个变量中。使用:

str = str.concat(" game");

【讨论】:

只是一件小事:Strings 是不可变的,而不是 concat 函数

以上是关于字符串连接中 string.concat 和 + 运算符之间的区别[重复]的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript String concat() 方法

JavaSE8基础 String concat与+ 连接两个字符串

Javascript String Concat函数问题[重复]

字符串 String

Java:String concat vs StringBuilder - 优化了,我该怎么办?

几种常见的字符串连接方法连接速度分析