如何深入探讨 String、StringBuilder、StringBuffer 的区别与联系?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1129个文字,预计阅读时间需要5分钟。
StringBuilder和StringBuffer都是用于存储字符串的类,与String类似。1、既然已经有了String,为什么还需要它们呢?原因是String是不可变的,每次字符串拼接都会创建一个新的String对象。
StringBuilder、StringBuffer 和 String 一样,都是用于存储字符串的。
1、那既然有了 String ,为什么还需要他们两个呢?
原因是 String 是不可变的,它每次的字符串拼接,实际上都会 new 一个新的 String 进行接收。
2、谈谈StringBuilder、StringBuffer他们两个的联系:
我们可以知道 StringBuffer 在 1.0 的时候就发布了,那为什么还需要 StringBuilder 呢?原因是它的大部分方法都上了锁,是线程安全的,导致了效率较低!而我们有时候不需要考虑线程安全问题,追求效率!所以 StringBuilder 在 1.5 的时候就出来了!
3、StringBuilder、StringBuffer 的异同:*
不同:
- StringBuffer 它因为追求安全,给大量方法上锁,线程安全!
- StringBuilder 它因为追求效率,没有给方法上锁,线程不安全!
相同:内部方法和 StringBuffer 完全一致,因为都继承了 AbstractStringBuilder,底层数组都是用父类的。
4、源码浅析 String:
结论:final 修饰了底层的字符数组,故内容不可变。
本文共计1129个文字,预计阅读时间需要5分钟。
StringBuilder和StringBuffer都是用于存储字符串的类,与String类似。1、既然已经有了String,为什么还需要它们呢?原因是String是不可变的,每次字符串拼接都会创建一个新的String对象。
StringBuilder、StringBuffer 和 String 一样,都是用于存储字符串的。
1、那既然有了 String ,为什么还需要他们两个呢?
原因是 String 是不可变的,它每次的字符串拼接,实际上都会 new 一个新的 String 进行接收。
2、谈谈StringBuilder、StringBuffer他们两个的联系:
我们可以知道 StringBuffer 在 1.0 的时候就发布了,那为什么还需要 StringBuilder 呢?原因是它的大部分方法都上了锁,是线程安全的,导致了效率较低!而我们有时候不需要考虑线程安全问题,追求效率!所以 StringBuilder 在 1.5 的时候就出来了!
3、StringBuilder、StringBuffer 的异同:*
不同:
- StringBuffer 它因为追求安全,给大量方法上锁,线程安全!
- StringBuilder 它因为追求效率,没有给方法上锁,线程不安全!
相同:内部方法和 StringBuffer 完全一致,因为都继承了 AbstractStringBuilder,底层数组都是用父类的。
4、源码浅析 String:
结论:final 修饰了底层的字符数组,故内容不可变。

