美文网首页
java学习笔记-String,StringBuffer,Str

java学习笔记-String,StringBuffer,Str

作者: GGatsby | 来源:发表于2018-08-05 16:34 被阅读12次

都是对象,引用类型。

String:字符串常量,存在于常量池,字符串长度不可变。Java 中 String 是 immutable(不可变)的。

本质在于String的实现是一个Char数组,并且使用final修饰符。

因此对String对象的每次操作都需要重新申请内存,操作次数过多会导致无效内存占用增多,进而导致GC工作,降低效率。

StringBuffer:字符串变量(Synchronized,即线程安全)。如果要频繁对字符串内容进行修改,出于效率考虑最好使用 StringBuffer,如果想转成 String 类型,可以调用 StringBuffer 的 toString() 方法。

线程安全,即多线程状态下是安全的。浅层次,线程安全的本质是锁。

常用于全局变量,更改对象时操作原对象,内存消耗小。常用的方法有append和insert。

StringBuilder:字符串变量(非线程安全)。在内部,StringBuilder 对象被当作是一个包含字符序列的变长数组。默认长度为16。JDK5.0新增的。

使用策略

1.除了常量,不用String。

2.StringBuilder非线程安全,因此性能优于StringBuffer,但在多线程情况下,需要加锁。单线程情况下,使用StringBuilder,多线程时,均可。

3.StringBuffer的线程安全不是一个好特性,耗费性能却不能保证多线程安全。

4.在构造StringBuffer和StringBuilder时,最好指定容量,默认是16,可很好提升性能。

相关文章

网友评论

      本文标题:java学习笔记-String,StringBuffer,Str

      本文链接:https://www.haomeiwen.com/subject/ikvbvftx.html