黑马程序员技术交流社区
标题:
字符串相加用“+”和append()的区别?
[打印本页]
作者:
胡滨
时间:
2013-4-9 21:24
标题:
字符串相加用“+”和append()的区别?
本帖最后由 胡滨 于 2013-4-9 21:55 编辑
不都是加字符串吗?
既然有这两种方法,应该有差别吧?
求解释。
作者:
刘林虎
时间:
2013-4-9 21:31
java中没有运算符重载,你说的string+string,是java内置将String类特殊处理为和基本类型Integer,Double等相同的类型,字符串相加实际是调用方法append方法。
比如:
String x = "a1" + "a2"
其实在编译后,代码变为
String x = (new StringBuilder(String.valueOf("a1"))).append("a2").toString();
这就是为什么在操作String时建议采用StringBuffer了,上面的操作显然对多次String的相加不利。
作者:
续圆凯
时间:
2013-4-9 21:31
本帖最后由 续圆凯 于 2013-4-9 21:42 编辑
1. 用“+“号每加一次创建一个对象,
举个例子来说明他们的区别:string a= "aa "; //假如第一次a分配了2Bit空间
a+= "bb ";
假如第一次a分配了2Bit空间(假如),下面相加的话,假如 "bb "需要2bit空间,则会开辟一个4bit的空间把aabb放进去.而存入 "aa "的空间会在下一次垃圾回收的时候删除.
2.append( ),是在原有基础上再分配空间,所以如果字符串相加的话,用StringBuilder吧.
append()只是将字符串追加到原字符串的尾部,始终都是一个对象!高效,正规.
作者:
U芽Lady
时间:
2013-4-9 21:35
用"+"号每加一次创建一个对象,比如字符串常量池中原来有有一个"abc"字符串,加上字符串"de"后,字符串常量池中就会有两个字符串"abc"和"abcde"
Append()知识将字符串追加到原来字符的尾部,始终是一个对象
作者:
王军行
时间:
2013-4-9 21:42
“+”作为字符串连接符存在是底层调用的就是append方法。
但是如果对String进行多次操作,复杂的操作,简单+实在没办法实现
所以要用 StringBuilder 和append等方法
可以理解为“+”作为字符串连接的简写形式,
简化代码,简单使用时非常方便
但是应用有局限性,功能有限。
作者:
胡滨
时间:
2013-4-9 21:56
感谢所有帮助的朋友:handshake
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2