String每次修改都会新建一个新的对象,再改变对象引用指向新的string对象,而且不会被Java垃圾回收机制回收
如下图,当为空的str获得"ab"值后,id改变了,19=>26
修改前,
修改后
StringBuilder与StringBuffer则不一样,改变再多次也不会产生新对象。
另一方面,StringBuffer中很多方法可以带有synchronized关键字,所以可以保证线程是安全的,但StringBuilder的方法则没有该关键字
总的来说:
速度 StringBuilder>StringBuffer>String
String每次修改都会新建一个新的对象,StringBuffer和StringBuffer不会
StringBuffer是一个线程安全的可变字符序列
StringBuilder是一个线程不安全的可变字符串
StringBuilder用作 StringBuffer 的一个简易替换
String能够初始化为空,StringBuffer和StringBuffer会报错
StringBuffer 与 StringBuffer 的换行
StringBuffer、StringBuilder使用append链接两段字符,用System.getProperty(“line.separator”)代替\n换行,因为除windows外其他操作系统不一定兼容\n的,所以用上述方式换行.如下图代码及输出结果