StringBuffer和StringBuilder有何主要差异?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1519个文字,预计阅读时间需要7分钟。
2019年,独角兽企业重金招聘Python工程师。标准:String是不可变的,StringBuffer和StringBuilder是可变的。注意:本意是为了StringBuilder和StringBuffer的可变性。
2019独角兽企业重金招聘Python工程师标准String是不可改变定长StringBuffer,StringBuilder是不定长定长 StringBuffer, StringBuilder 是不定长可改变. 注意本来以为StringBuilder 和StringBuffer 的equals 方法是可以比较两个字符串的内容是否相等今天才发现不是这么回事。这两个类都直接继承自Object 并且没有重写equals 方法。Java代码
若要比较内容是否相同sb1.toString().equals(sb2.toString())
简要的说 String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象然后将指针指向新的 String 对象所以经常改变内容的字符串最好不要用 String 因为每次生成对象都会对系统性能产生影响特别当内存中无引用对象多了以后 JVM 的 GC 就会开始工作那速度是一定会相当慢的。
本文共计1519个文字,预计阅读时间需要7分钟。
2019年,独角兽企业重金招聘Python工程师。标准:String是不可变的,StringBuffer和StringBuilder是可变的。注意:本意是为了StringBuilder和StringBuffer的可变性。
2019独角兽企业重金招聘Python工程师标准String是不可改变定长StringBuffer,StringBuilder是不定长定长 StringBuffer, StringBuilder 是不定长可改变. 注意本来以为StringBuilder 和StringBuffer 的equals 方法是可以比较两个字符串的内容是否相等今天才发现不是这么回事。这两个类都直接继承自Object 并且没有重写equals 方法。Java代码
若要比较内容是否相同sb1.toString().equals(sb2.toString())
简要的说 String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象然后将指针指向新的 String 对象所以经常改变内容的字符串最好不要用 String 因为每次生成对象都会对系统性能产生影响特别当内存中无引用对象多了以后 JVM 的 GC 就会开始工作那速度是一定会相当慢的。

