AbstractStringBuilder类源码解析

AbstractStringBuilder 类

e8761423a19190440d36d4b9817321842c5.jpg

AbstractStringBuilder 类实现了Appendable和CharSequence。

先看一下Appendable,它是一个可用于追加的接口,jdk1.5出现的,这个接口在多线程情况下是线程不安全的,线程安全性由他的实现类来保证。这个接口的各个现有实现类具有不同错误处理风格,因此不能保证错误将传播到调用程序。

再看一下接口CharSequence,CharSequence是一组可读的字符值序列。该接口提供对许多不同类型的字符序列的统一只读访问。这个接口没有细化{@link java.lang.Object#equals(java.lang.Object) =}和{@link java.lang.Object#hashCode() hashCode}方法的一般契约。因此,比较实现CharSequence的两个对象的结果通常是未定义的。每个对象都可以由不同的类实现,并且不能保证每个类都能够测试它的实例与其他类的实例是否相等。因此,将任意CharSequence实例用作set集合中的元素或map映射中的键是不合适的。

看完这2个接口之后,我们回到AbstractStringBuilder 类。这个类有2个属性,字节数组value:用来储存字节。count:被使用的字节的数量。

这个类有2个构造方法,无参和有参的构造方法,有参构造方法,用于创建指定容量的AbstractStringBuilder。

看一下这个类的几个方法:

89327de775fd2ed14aad438c795770b6b89.jpg

这个是扩容的方法,我比较好奇的是加2的意义。

再就是faac153e9a2649b37a06c5f9963ff6061b1.jpg,这段代码在扩容,截取的时候都是很不错的,而且是native修饰的。

别的方法都很简单,然后看一下就差不多了,我就没做什么笔记。

 

 

 

 

 

转载于:https://my.oschina.net/u/3944601/blog/3043576

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 抽象字符串构建器(AbstractStringBuilder)是一个抽象,它提供了一些基本的字符串操作方法,如追加、插入、删除、替换等。它是StringBuilder和StringBuffer的父,这两个都继承了它的方法。抽象字符串构建器的主要作用是提供一个可变的字符串缓冲区,以便在字符串操作时能够高效地进行。 ### 回答2: AbstractStringBuilderJava中的一个抽象,用于表示可变长度的字符串。它是StringBuilder和StringBuffer的基AbstractStringBuilder提供了一系列方法来操作和修改字符串的内容。它内部维护了一个字符数组(char[]),用于存储字符串的字符内容。这个字符数组的长度是可变的,当需要扩容时,AbstractStringBuilder会自动创建一个更大的数组来容纳更多的字符。 通过调用AbstractStringBuilder的方法,我们可以进行字符串的添加、删除、替换、插入等操作。例如,可以通过append()方法将一个字符串追加到当前字符串的末尾,通过delete()方法删除指定位置的字符,通过insert()方法在指定位置插入一个字符串,通过replace()方法替换指定位置的字符等。 与String不同的是,AbstractStringBuilder提供了一些原地修改字符串的方法,这些方法可以避免重复创建新的字符串对象,提升了性能。 另外,AbstractStringBuilder还提供了一些用于字符操作的方法,比如charAt()方法用于获取指定位置的字符,length()方法用于获取字符串的长度等。 需要注意的是,AbstractStringBuilder是一个抽象,不能直接实例化,我们通常使用它的子StringBuilder和StringBuffer来创建可变长度的字符串。 总的来说,AbstractStringBuilder提供了一组灵活且高效的方法来操作和修改字符串。通过它,我们可以方便地处理可变长度的字符串,而不需要重复创建新的字符串对象。 ### 回答3: AbstractStringBuilderJava中的一个抽象,用于实现可变字符串的操作。它是StringBuilder和StringBuffer的父AbstractStringBuilder内部以一个字符数组(char[])来保存字符串内容,并提供了一系列方法来对字符串进行增删改查的操作。 它的主要方法包括: 1. append():用于将指定字符串或字符追加到当前字符串的末尾。 2. delete():用于删除指定范围内的字符。 3. insert():用于在指定位置插入字符串或字符。 4. replace():用指定字符串替换指定位置的字符。 5. reverse():用于反转当前字符串。 6. substring():返回指定范围内的子字符串。 AbstractStringBuilder的实现是非线程安全的,适用于单线程环境下的字符串操作。相比于StringBuffer,它的效率更高,因为不需要同步访问。 AbstractStringBuilder作为一个抽象,不能直接使用,需要使用具体的实现StringBuilder或StringBuffer来创建可变字符串对象。这两个继承自AbstractStringBuilder,提供了和它相同的方法,并且StringBuilder是线程不安全的,而StringBuffer是线程安全的。 总之,AbstractStringBuilderJava中用于实现可变字符串操作的抽象,提供了一系列方法用于字符串的增删改查。它的主要实现StringBuilder和StringBuffer,分别用于单线程和多线程环境下的字符串操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值