【Java 入门】String,StringBuffer 和 StringBuilder
基本介绍
字符串广泛应用编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。
String 类是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了。
Q: 为什么说Sting类是可不变的呢?
A: 我们String的底层实现,实际上是由final char[]来存储。代码如下:
当我们对字符串进行频繁修改的时候,一般使用 StringBuffer 和 StringBuilder 类。
和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
Q: 为什么?
A: 看代码
StringBuffer使用synchronized关键字修饰,保障线程安全。
使用toStringCache保障线程安全,并提高返回效率。
使用共享String提升速度
StringBuffer 精简核心代码
StringBuilder代码如下:
实际开发建议
Synchronized classes Vector, Hashtable, Stack and StringBuffer should not be used
Early classes of the Java API, such as Vector, Hashtable and StringBuffer, were synchronized to make them thread-safe. Unfortunately, synchronization has a big negative impact on performance, even when using these collections from a single thread.
It is better to use their new unsynchronized replacements:
ArrayList or LinkedList instead of Vector
Deque instead of Stack
HashMap instead of Hashtable
StringBuilder instead of StringBuffer
总结
当我们需要频率变更字符串的时候,请使用StringBuilder,效率更高。
代码就是最好的解释,我们在学习开发过程中,要培养自己阅读英文的能力,上面的英文都比较容易理解,是很好的入门学习材料。
版权声明: 本文为 InfoQ 作者【HQ数字卡】的原创文章。
原文链接:【http://xie.infoq.cn/article/3b6ca7de6f2f7c547409eb9fa】。文章转载请联系作者。
评论