字符串连接 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)
>> NPE
s
但是 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() 方法)
我知道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)
>> NPE
s
但是 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() 方法)