String与StringBuilder

来源:互联网 发布:2017网络大会 编辑:程序博客网 时间:2024/05/08 17:50

java中值对运算符“+”和“+=”进行了重载(仅有的两个),不允许程序员对任何运算符重载。

+”用于数字上就是加法运算,用于字符串上就是连接。

java中像 Strings="abc"+"mango"+47这样的字符串会编译成StringBuilder来进行字符串的拼接。

String不是不可变字符串,而StringBuilder是可变字符串。

下图中虽然他们最终会生成StringBuilder对象,但是explicit方法的效率要比implicit高。因为在implicit中在创建String result="";的时候并不会创建StringBuilder,而在循环的时候看到了“+=”的时候才会创建StringBuilder,所以会每次循环都会添加一个StringBuilder


注意,不要写 append(a+":"+c),这样的代码,这样编译器会再创建一个StringBuilder,得不偿失。

0 0