LearnJava(三)String、StringBuffer 与 StringBuilder

本文探讨了Java中String、StringBuffer及StringBuilder的区别。分析了字符串拼接时如何选择合适的类以提高性能,特别是在多线程环境下如何确保线程安全。

  我们知道,String对象是不可变的,而Java中String类提供了“+”进行字符串拼接操作,从JDK1.5开始,字符串的拼接操作是通过StringBuffer类来完成的。

String a = "str";
String b = "ing";
String c = a + b;

上述代码的实际实现过程是:

String c = new StringBuffer(a).append(b).toString();

  也就是说,在这个过程中实际创建了一个StringBuffer对象和一个String对象。因此,当对字符串进行修改的时候,使用 StringBuffer 和 StringBuilder 类,系统开销比较小。
  与 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。

区别
  • String 不可变,而 StringBuffer 和 StringBuilder 是可变的。
  • StringBuffer 是线程安全的,内部使用 synchronized进行同步,而 StringBuilder 不是线程安全的。

根据这些主要区别:

  1. 进行字符串拼接操作时,使用StingBuffer 和 StringBuilder 可以节省系统开销。
  2. 在要求线程安全的情况下,应该使用 StringBuffer。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值