请问java中string类concat方法和+的区别
都可以将2个字符串拼接到一块,这一点2这功能相同。
但是 + 还可以将 字符串与非字符串(比如数字),拼接在一起,成为字符串。
要看看他们之间的区别,我们可以从源码分析两者的区别,
concat是String方法,String重载了“+”操作符(提醒下:Java不支持其他操作符的重载)。
concat源码:
[code="java"] public String concat(String str) {
int otherLen = str.length();
if (otherLen == 0) {
return this;
}
char buf[] = new char[count + otherLen];
getChars(0, count, buf, 0);
str.getChars(0, otherLen, buf, count);
return new String(0, count + otherLen, buf);
}[/code]
源码中对String中+操作符的描述如下
[quote] The Java language provides special support for the string concatenation operator ( + ), and for conversion of other objects to strings. String concatenation is implemented through the[size=medium] StringBuilder/size class and its [size=medium]append[/size] method.[/quote]
以上两个方法中都有开辟(new)以及销毁堆空间的操作,打大量的string操作导致效率很低。
所以在大量操作string字符串时,StringBuilder的append方法是最好的选择
[b]“+”[/b]
在java内部是对+进行了重载,在处理String的过程中要创建一个StringBuffer对象,用StringBuffer对象的append方法对字符串进行连接,最后调用toString方法返回String字符串。
[url]http://book.csdn.net/bookfiles/890/10089027994.shtml[/url]
如果多线程操作String ,+ 和concat应该是有区别的。