类图
StringBuilder类图StringBuilder.java
public final class StringBuilder
extends AbstractStringBuilder
implements java.io.Serializable, CharSequence
{
//省略一堆变量,一堆构造方法
。。。
//建造者的表现,赋值完后,返回实例本身。这样子就可以实现链式调用。即this.append("a").append("b");
@Override
public StringBuilder append(String str) {
super.append(str);
return this;
}
//省略一堆方法
。。。
}
StringBuffer.java
public final class StringBuffer
extends AbstractStringBuilder
implements java.io.Serializable, CharSequence
{
//省略一堆变量,一堆构造方法
。。。
//这个方法,其实和StringBuilder的append方法一模一样,
//因为它们的父类都是AbstractStringBuilder,然后都是赋值完后,
//就返回本身。这个是线程安全的。(加锁了)
@Override
public synchronized StringBuffer append(String str) {
toStringCache = null;
super.append(str);
return this;
}
//省略一堆方法
。。。
}
AbstractStringBuilder.java
abstract class AbstractStringBuilder implements Appendable, CharSequence {
//省略一堆方法
。。。
//这个方法,就是被StringBuilder和StringBuffer调用的append方法
public AbstractStringBuilder append(String str) {
if (str == null)
return appendNull();
int len = str.length();
ensureCapacityInternal(count + len);
str.getChars(0, len, value, count);
count += len;
return this;
}
//省略一堆方法
}
CharSequence.java
CharSequence接口,被StringBuilder和StringBuffer都实现了,因为字符串底层就是字符数组。实际上,字符串就是字符序列。
public interface CharSequence {
//省略一堆方法,因为这不是主要介绍CharSequence
}
Serializable.java
一个标记接口,序列化接口
public interface Serializable {
}
网友评论