String、StringBuffer、StringBuilder的区别?
- String: 字符串常量被存储在字符串常量池中,是不可变的,不适合进行频繁的字符串拼接等操作
- StringBuilder: 线程不安全的,jdk5.0才存在(晚辈),线程不安全,效率比较高
- StringBuffer: 线程安全的,jdk1.0就存在(古老的类),线程安全,所以效率比较低(已经被淘汰)
- StringBuilder和StringBuffer都是字符串缓冲区,对于字符串频繁改动操作处理都比较优秀;
- 当我们在字符串缓冲区被多个线程使用的时候,JVM不能保证StringBuilder的操作是安全的,虽然它的速度最快,但是可以保证StringBuffer是可以正确操作的。当然大多数情况下就是我们是在单线程下进行的操作,所以大多数情况下是建议用StringBuilder而不用StringBuffer的,就是速度的原因。
- 对于三者使用的总结:
- 如果要操作少量的数据用 = String
- 单线程操作字符串缓冲区 下操作大量数据 = StringBuilder
- 多线程操作字符串缓冲区 下操作大量数据 = StringBuffer