Java String,StringBuilder,StringBuffer三者的区别
一、对象不同
String是字符串变量,值不可变的。导致重新复制,就会生成新的String对象,旧的栈会被JVM垃圾回收
StringBuffer和StringBuilder是字符串变量
二、继承结构
三、修改区别
String:不可变字符串;
StringBuilder:可变字符序列、效率高、线程不安全;
StringBuffer:可变字符串、效率低、线程安全;源码如下
public synchronized StringBuffer append
public synchronized StringBuffer reverse
public synchronized int lastIndexOf
...
四、效率
StringBuffer比StringBuilder慢,但是线程安全
修改 StringBuffer和StringBuilder比String块
如果下面String块:String str = "abc"+"de"; StringBuilder stringBuilder=new StringBuilder().append("abc").append("de");因为String 常量池字符串拼接相当于String str="abcde"