Java开发基础知识之学习篇——String

String 、StringBuffer 和StringBuilder 的区别是什么?从几个方面来解释。

1、可变性

 String类中使用final关键字字符数组保存字符串,它的长度是不可变的。

 StringBuffer 和 StringBuilder 都继承自AbstractStringBuilder类,而在AbstractStringBuilder中也是使用字符数组保存字符串,但是没有用final关键字修饰,所以这两种对象都是可变的。

2、线程安全性

 String中的对象是不可变的,就是常量,线程安全。

 StringBuffer 对方法加了同步锁(使用synchronized 关键字修饰),因此是线程安全的。

 StringBuild 对方法没有加同步锁,所以是非线程安全的。

3、执行效率

 三者在执行速度方面的比较:StringBuilder > StringBuffer >String 

4、应用场景

  操作少量数据用 String 

  单线程操作大量数据字符串用 StringBuilder

  多线程操作大量数据字符串用 StringBuffer

原文地址:https://www.cnblogs.com/cokeHuan/p/11897899.html