我知道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()
?
答案 0 :(得分:3)
有区别。
如果aStr
为空,则aStr.concat(bStr)
>> NPE
s
但如果aStr += bStr
将aStr
的原始值视为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()方法)