StringBuilder与StringBuffer

对以前学习到的一些基础进行一个回顾,之前学习的时候没有将其整理并记录下来,现在做的算是对以前学习的弥补,并且起到一个温故而知新的作用。


StringBuilder与StringBuffer都是java.lang包下的类,用来封装char[]数组的对象,是可变的字符串序列,常用来代替字符串的低效率连接,执行高效率的字符串的连接。

StringBuilder线程不安全,StringBuffer线程安全。

常用方法:

1、创建对象

(1 )StringBuilder sb = new StringBuilder();       创建出来的是一个空串。

(2 )StringBuilder sb = new StringBuilder("abc");      创建出来的是“abc”字符串。

2、常用方法

(1)append()      在字符串末尾追加字符,高效率的字符串连接。

(2)delete(int start , int end)     删除[start, end)范围内的字符。

(3)deleteCharAt(int index)      删除index位置的单个字符。

(4)insert(int index, 子串)     在index位置处插入子串。

(5)replace(int start, int end, String str)      将[start, end)范围内的子串用指定的字符串str替代。

(6)reverse()       翻转字符串。

(7)setCharAt(int index, char ch)      将index位置处的字符用ch替代。

(8)toString()           转换成String类型的字符串。

3、简单示例:

String s1 = "abc";

String s2 = "def";

String s3 = "ghi";

StringBuilder sb = new StringBuilder();

sb.append(s1);

sb.append(s2);

sb.append(s3);

System.out.println(sb);

以上一段程序输出结果为:abcdefghi


两者的比较:

1、在执行速度方面:StringBuilder > StringBuffer

2、StringBuffer与StringBuilder,他们都是字符串变量,是可改变的对象,每当我们用他们对字符串进行操作时,实际上是在一个对象上操作的,不像String一样创建一些对象进行操作,所以速度就快了。

3、StringBuilder是线程不安全的,StringBuffer是线程安全的。所谓的线程安全与否在于当我们在字符串缓冲被多个线程使用时,JVM(JAVA Virtual Mechine ,JAVA虚拟机)不能保证StringBuilder的操作是安全的,虽然StringBuilder的速度最快,但是可以保证StringBuffer是可以正确操作的。

当然,大多数情况下我们是在单线程下进行的操作,所以大多数情况下考虑速度的因素是建议使用StringBuilder而不用StringBuffer 。

对于以上StringBuilder与StringBuffer的使用进行小的总结:

1、如果要操作少量的数据用String。

2、单线程操作字符串缓冲区下操作大量数据使用StringBuilder。

3、多线程操作字符串缓冲区操作大量数据使用StringBuffer。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: StringBuilderStringBuffer都是Java中的字符串缓冲区类,它们的作用是在字符串操作时提高效率。它们的主要区别在于线程安全性和性能。StringBuffer是线程安全的,但是性能相对较差;而StringBuilder则是非线程安全的,但是性能更好。在单线程环境下,建议使用StringBuilder,而在多线程环境下,建议使用StringBuffer。 ### 回答2: StringBuilderStringBuffer都是Java中用于操作字符串的类,它们之间的主要区别在于线程安全性和性能上的差异。 StringBuffer是一个线程安全的可变字符串类,它的方法都被synchronized关键字修饰,因此多个线程可以同时访问同一个StringBuffer对象,确保操作的原子性和一致性。这种线程安全性会带来额外的开销,在多线程环境下使用较为合适。 而StringBuilder是一个非线程安全的可变字符串类,它的方法没有被synchronized修饰,因此在单线程环境下性能比StringBuffer更好。由于不需要考虑线程安全性,StringBuilder的方法在执行速度上比StringBuffer更快,并且不会导致额外的开销。 除了线程安全性和性能上的差异,StringBuilderStringBuffer的使用方法几乎相同。它们都提供了一系列用于操作字符串的方法,例如追加字符串、插入字符串、删除字符串等。可以通过调用它们的构造函数来创建一个空的StringBuilderStringBuffer对象,并使用append()方法来进行字符串的操作。最后,通过调用toString()方法可以将结果转换为String类型。 综上所述,如果需要在多线程环境中操作字符串或者考虑线程安全问题,应该使用StringBuffer;如果在单线程环境中操作字符串或者追求更高的性能,应该使用StringBuilder。 ### 回答3: StringBuilderStringBuffer是Java中用于处理字符串的两个类,它们有很多相似之处,但也有一些不同点。 首先,它们的相似之处在于: 1. 都是可变的字符串类,可以通过添加、插入、删除和修改字符来操作字符串。 2. 都可以通过toString()方法获得最终的字符串结果。 3. 都是线程安全的,可以在多线程环境下使用,但StringBuffer的方法是同步的,而StringBuilder的方法是非同步的。 然而,它们的不同之处在于: 1. 效率:StringBuilderStringBuffer的效率更高,因为StringBuilder的方法是非同步的,不需要考虑线程安全问题,而StringBuffer的方法是同步的,需要进行线程安全的操作。 2. 可变性:StringBuilder是JDK 1.5引入的,它是非线程安全的,因此在单线程环境下性能更好。而StringBuffer是JDK 1.0引入的,它是线程安全的,因此在多线程环境中性能较好。 3. 内部实现:StringBuilderStringBuffer都使用可变的字符数组来存储字符串,但是StringBuffer在对字符串进行修改时会创建一个新的字符数组,而StringBuilder则对原有的数组进行修改,减少了内存开销。 总的来说,如果在单线程环境下进行字符串操作,建议使用StringBuilder,因为它效率更高。而如果在多线程环境下进行字符串操作,建议使用StringBuffer,因为它是线程安全的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值