字符串连接 concat() 和 + 运算符的有效使用

String concatenation concat() and + operator usage effectively

我知道String concatenation: concat() vs "+" operator

但我对有效使用 concat() 和 + 运算符有疑问

concat()+ 运算符更有效,但在下面的少数情况下我们仍然使用 + 运算符

案例一

System.out.println("Hi! Welcome: "+nameString);

案例二:

将长行拆分为多行(eclipse 格式)

System.out.println("Hi! Welcome: "+nameString1
                                  +nameString2
                                  +nameString3);

为什么我们仍然使用 + 运算符而不是 concat()

有区别。

如果 aStr 为空,则 aStr.concat(bStr) >> NPEs
但是 if aStr += bStr 会将 aStr 的原始值视为 null

此外,concat() 方法仅接受 String 而不是 + 运算符,后者将参数转换为 String(使用 Object.toString())。

所以 concat() 方法接受的内容更加严格。

此外,如果您有很多字符串与 concat()+ 的连接,我强烈建议您使用可变 StringBuilder 对象,这将提高您的代码速度。

我同意你关于 concat() 效率的看法,但要研究它的几个问题,

对于 concat(String str)

concat() 对其参数更加严格,这意味着它只接受字符串而不接受任何其他原始或包装数据类型(签名 concat(String str))。 字符串 a = null,字符串 b = "ABC"; b.concat(a) 抛出空指针异常。

对于 + 接受所有数据类型(包装器或原始数据),就像您使用 a+=b 一样,不会有任何 NPE 运算符将默默地将参数转换为字符串(使用对象的 toString() 方法)