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。

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

AbstractStringBuilder类源码解析_第1张图片

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

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

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

 

 

 

 

 

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

你可能感兴趣的:(java)