Java面试之String 和 StringBuffer、StringBuilder 的区别是什么?String 为什 么是不可变的?
2020-03-06 14:06
1471 查看
**
- 可变性比较
**
String类使用final关键字修饰字符数组保存字符串,对象不可变
StringBuffer、StringBuilder则都继承自 AbstractStringBuilder 其没有使用final关键字修饰数组,对象可变
**
2.线程安全性比较
**
String类中对象不可变,线程安全
StringBuffer类中对方法加了同步锁,所以也是线程安全的
StringBuilder类中并未加同步锁,所以是非线程安全的
**
3.性能比较
**
使用String类时,每次都会生成新的String对象,然后指针指向新的对象。
StringBuffer则每次对StringBuffer对象本身操作,不生成新的对象。
StringBuilder比StringBuffer提升10%到15%的性能,要冒线程不安全的风险
总结
- 操作少量的数据 = String
- 单线程操作字符串缓冲区下操作大量数据 = StringBuilder
- 多线程操作字符串缓冲区下操作大量数据 = StringBuffer
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- String 和 StringBuffer、StringBuilder 的区别是什么?String 为什 么是不可变的?
- java核心内容——String、StringBuffer、StringBuilder有什么区别?
- Java中String、StringBuffer、StringBuilder的区别及面试经常出现的问
- Java中String、StringBuffer、StringBuilder的区别及面试经常出现的问题
- Java中String、StringBuffer、StringBuilder的区别及面试经常出现的问题
- 【Java核心技术36讲】第5讲:String、StringBuffer、StringBuilder有什么区别
- String,StringBuffer, StringBuilder 的区别是什么?String为什么是不可变的?
- Java中String、StringBuffer、StringBuilder的区别及面试经常出现的问题
- java基础(二)------ String,StringBuffer,StringBuilder有什么区别?
- java面试:String与StringBuffer、StringBuilder的区别
- Java核心技术之String,StringBuffer,StringBuilder有什么区别
- Java面试概念之String、StringBuffer与StringBuilder的区别
- Java 的字符串,String、StringBuffer、StringBuilder 有什么区别
- String,StringBuffer, StringBuilder 的区别是什么?String为什么是不可变的?
- Java中String、StringBuffer、StringBuilder的区别及面试经常出现的问题
- Java面试04--StringBuffer、StringBuilder、String的区别
- Java中String、StringBuffer、StringBuilder的区别及面试经常出现的问题
- Java面试String,StringBuffer,StringBuilder的区别
- Java String、StringBuffer、StringBuilder有什么区别
- String,StringBuffer, StringBuilder 的区别是什么?String为什么是不可变的?