本文主要是介绍《StringBuffer与StringBuilder阐释》,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
StringBuffer
一 StringBuffer基本介绍:
1)java.lang.StringBuffer 代表可变的字符序列,可以对字符串的内容进行增删。
2)很多方法与 String 相同,但是StringBuffer是可变长度的
3)StringBuffer是一个容器
二 String Vs StringBuffer
1)String 保存的是字符串常量,里面的值不能更改,每次 String 类的更新实际上就是更改地址,效率更低。// private final char[ ] value
2) StringBuffer 保存的是字符串变量,里面的值可以修改,每次 StringBuffer 的更新实际上可以更新内容,不用每次更新地址,效率更高。 // char[ ] value 这个放在堆。
3) StringBuffer 有扩容机制,当分配的内存地址空间不够时,才会重新分配新的地址,扩大范围,效率更高。
三:StringBuffer的构造器
1)StringBuffer()
构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。
2)StringBuffer(int capacity) //capacity 容量
构造一个不带字符,但具有指定初始容量的字符串缓冲区。即对 char[ ] 大小进行指定
3 ) StringBuffer(String str)
构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。
四:String 和 StringBuffer 相互转换
在开发中,我们常要将 String 和 StringBuffer 相互转化,看看如何实现
分别都是两种方法。
五:StringBuffer的常用方法。
1) 增 append
2)减 delete
3)改 replace
4)查 indexOf
5)插 insert
六: StringBuffer 练习题
1. 下面程序的输出结果是?
2. 实现输入产品名称,价格并输出,要求价格从小数点起三位以“,”分隔。例如 价格输入为1234567.82 ,输出 1,234,567.82 输入45213.86 输出 45,213.86
StringBuilder
一:基本介绍
1)一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步(StringBulider 不是线程安全)。此类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候。如果可能,建议优先采用该类,因为在大多数实践中,它比 StringBuffer 更快。
2)在StringBuilder 上的主要操作是 append 和 insert 方法,可以重载这些方法,以接收任意类型的数据。
注意:StringBuilder 的方法,没有做互斥的处理,即没有 synchronized 关键字,因此在单线程的基础下使用 StringBuilder。
二:StringBuilder 与 String、StringBuffer的比较
1)StringBuilder与StringBuffer 非常类似,均代表可变的字符序列,而且方法也一样。
2)String :不可变字符序列,效率低,但是复用率高。(即一个常量池中不可能创建两个一模一样的字符串常量)
3)StringBuffer :可变字符序列,效率较高(增删)、线程安全,看源码。
4)StringBuilder :可变字符序列,效率最高、线程不安全。
5)String使用注意说明:
String s = “a”;//创建了一个字符
s+= "b" //实际上原来的字符串对象已经丢弃了,现在又产生了一个新的字符串对象“ab”。如果多次执行这些改变字符串内容的操作,会导致大量副本字符串对象存留在内存中,降低效率。如果这样的操作放在循环中,会极大的影响程序的性能 => 结论:如果我们对 String 做大量的修改,不要使用 String
7) 三者效率对比 :
结论: StringBuilder > StringBuffer > String
三:StringBuilder 与 String、StringBuffer的使用原则
1)如果字符串存在大量的修改操作,一般使用 StringBuffer 或 StringBuilder
2)如果字符串存在大量的修改操作,并且单线程的情况, 使用 StringBuilder
3)如果字符串存在大量的修改操作,并且多线程的情况,使用 StringBuffer
4)如果字符串很少被修改,被多个对象引用,使用 String,比如配置信息等
这篇关于《StringBuffer与StringBuilder阐释》的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!