Java String,StringBuilder,StringBuffer三者的区别

一、对象不同

String是字符串变量,值不可变的。导致重新复制,就会生成新的String对象,旧的栈会被JVM垃圾回收

StringBuffer和StringBuilder是字符串变量

二、继承结构

Java String,StringBuilder,StringBuffer三者的区别

三、修改区别

    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"

五、String和StringBuilder字符串拼接JVM原理

          参考https://www.cnblogs.com/shanheyongmu/p/9583381.html