1、String是不可变的(修改String时,不会在原有的内存地址修改,而是重新指向一个新对象),String用final修饰,不可继承,String本质上是个final的char[]数组,所以char[]数组的内存地址不会被修改,而且String也没有对外暴露修改char[]数组的方法。不可变性可以保证对线程安全以及字符串常量池的实现。频繁的增删操作是不建议使用String的
2、StringBuffer是线程安全的,多线程建议使用这个
3、StringBuild是非线程安全的,单线程建议使用这个更快
想要更详细的解析请到下面的博客中查看,该博客从源码的角度来探索String、StringBuffer、StringBuilder: