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

时间:2015-05-22 10:38:38

标签: java coding-style string-concatenation

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

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

concat()+运算符效率更高,但我们仍然在以下几种情况下使用+运算符

案例1

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

案例2:

将巨大的长度线分成多行(eclipse格式化)

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

为什么我们仍然使用+运算符代替concat()

2 个答案:

答案 0 :(得分:3)

有区别。

如果aStr为空,则aStr.concat(bStr)>> NPE s
但如果aStr += bStraStr的原始值视为null

此外,concat()方法只接受String而不是+运算符,该运算符将参数转换为String(带Object.toString())。

因此concat()方法接受的内容更为严格。

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

答案 1 :(得分:1)

我同意你关于concat()效率的问题,但是看看它的问题很少,

对于concat(String str)

concat()对其参数更严格意味着它只接受String而不是任何其他原语或包装器数据类型(Signature concat(String str))。 String a = null,String b =“ABC”; b.concat(a)抛出空指针异常。

表示+ 接受所有数据类型(包装器或原始数据),就好像使用+ = b那样没有任何NPE operator将静默地将参数转换为String(对象使用toString()方法)