String相关的四种字符串类

本文详细介绍了Java中String、StringBuilder和StringBuffer的区别和使用,重点讲解了它们如何进行字符串拼接,包括"+"语法糖、concat()、append()方法以及StringJoiner的使用。建议在循环内使用StringBuilder或StringBuffer以提高效率,并在多线程环境下选择StringBuffer以确保线程安全。
摘要由CSDN通过智能技术生成

本篇文章介绍String,StringBuilder,StringBuffer和StringJoner的区别和使用,以及如何进行字符串拼接的常用方法

String

String类被final修饰,不可被继承,内部由一个被final字符数组实现,因此String是一个不可变类,这意味着对String的每次修改都会创建新的存储空间,而StringBuilder,StringBuffer都是字符串变量,是可以修改的。

如果执行String a=”abc”+”def”;,实际上经历了以下过程:

  1. 创建“abc”
  2. 创建“def”
  3. 合成“abcdef”
  4. 赋值给a
    String拼接过程
    至于”+”号是如何实现拼接的,后面会讲到。

StringBuilder和StringBuffer

之所以把这两个合在一起说是因为它们基本用法都类似,它们都是字符串变量,即它们的值一般可以动态改变而不会多占据存储空间。

JDK1.8中对StringBuilder和StringBuffer定义为AbstractStringBuilder的子类,这也说明了两者有巨大的相似性,AbstractStringBuilder定义为如下结构(StringBuilder始于JDK1.5):
StringBuilder内部结构
字符串数组value不被final修饰,证明value可变;由于存在count表示实际字符个数,这意味着value中的数据不是充满了整个value空间。

StringBuilder和StringBuffer的区别在于

1. StringBuilder是非线程安全的,StringBuffer是线程安全的
2. StringBuilder速度快,StringBuffer速度慢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值