- 可变性
String是final修饰的,他是一个不可变的类,他在每次创建字符串的时候是新建了一个对象,StringBuffer和StringBuilder是一个可变的类,他在每次更改的时候会在源对象的基础上更改,并不会重新创建对象
- 线程安全性
String是一个不可变的类,所以他是一个线程安全的,StringBuffer也是一个线程安全的,他的每一个方法都用了一个Synchronized一个同步关键字修饰,StringBuider不是一个线程安全的,多线程的情况下应该使用StirngBuffer
- 性能方面
String是性能最低的,因为他是不可变的类,每次修改都是创建对象,StringBuffer是可变的,每次字符串修改或者拼接的时候他不会重新创建对象,StringBuider的性能是最高的,因为StringBuffer是加了锁的,加锁之后性能方面会有所损耗
- 存储方面
String存储在字符串常量池中,StringBuffer和StringBuilder是存储在堆内存中