天天看点

Java源码___AbstractStringBuilder抽象类(一)

 java.lang.AbstractStringBuilder分析摘要:

<1>简介

<2>常量和变量

<3>构造器方法

<4>length()方法

<5>capacity()方法

<6>ensureCapacity(int minmumCapacity)

1.简介

 类介绍:

AbstractStringBuilder是一个抽象类,它是StringBuffer类和StringBuilder类的父类。它是一个易变的字符序列。实现可修改字符串,在任何时间点,他包含一些特定的字符序列,但是序列的长度和字符可以通过特殊的方法去修改。且如果往构造方法中丢入实参null的话,会抛出NullPointerException异常。

abstract class AbstractStringBuilder implements Appendable, CharSequence
           

继承关系:

Java源码___AbstractStringBuilder抽象类(一)

这个方法是的属性有:abstract 抽象的、default默认包访问权限。

实现Appendable接口:Appendable实现类对象能够被添加char序列和值。

实现CharSequence接口:该接口中有包含一些操作char字符的方法。

2.常量和变量介绍

 这是该抽象类中的变量介绍。

//这个char数组被用作字符仓库
char[] value;

//使用字符的数量
int count;

//要分配数组的最大长度。
//如果超过这个界限,会导致OutOfMemoryError:请求数组大小超过限制
private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - ;
           

3.构造器方法

 这是AbstractStringBuilder类的构造方法。

//无参构造器方法对子类的序列化是必需的
AbstractStringBuilder(){

}

//创建指定容量的AbstractStringBuilder类
AbstractStringBuilder(int capacity){
    value = new char[capacity];
}
           

这个方法是的属性有:default默认包权限。

参数:capacity

int类型,指定abstractStringBuilder的容量大小

异常:NullPointerException

异常说明:如果capacity传值为null,则会抛出此异常。

4.length()方法

 该方法获取字符长度。

public int length(){
    return count;
}
           

这个方法是的属性有:public公有。

返回值:int类型

返回值说明:返回一个count,而count是记录该该抽象字符的字符数。

5. capacity()方法

 该方法会返回字符生产类的容量大小。

public int capacity(){
    return value.length;
}
           

这个方法是的属性有:public公有。

返回值:int 类型

返回值说明:返回该类的字符容量大小。

6. ensureCapacity(int minimumCapacity)

 该方法是个会保证类的容量大小的方法。

public void ensureCapacity(int minmumCapacity){
    if(minmumCapacity > ){
        ensureCacityInternal(minmumCapacity);
    }
}

//该方法不同步。如果代码由于数组太大而溢出为非正,该方法会抛出OutOfMemoryError
private void ensureCapacityInternal(int minmumCapacity){
    if(minmumCapacity-value.length > ){
        value = Array.copyOf(value, newCapacity(minmumCapacity));
    }
}

//
private int newCapacity(int minCapacity){
    int newCapacity = (value.length << ) + ;
    if(newCapacity - minCapacity < ){
        newCapacity = minCapacity;
    }
    return (newCapacity <=  || MAX_ARRAY_SIZE - newCapacity<)
                ? hugeCapacity(minCapacity) 
                : newCapacity;
}

private int hugeCapacity(int minCapacity){
    if(Integer.MAX_VALUE - minCapacity <){
        throw new OutOfMemoryError();
    }
    return (minCapacity > MAX_ARRAY_SIZE)
                ? minCapacity : MAX_ARRAY_SIZE;
}
           

这个方法是的属性有:public公有。

参数:minmumCapacity

最小容量

参数说明:int类型,最小容量数值。用于和该类的容量做比较。

方法说明:如果该类的容量大于minmumCapacity,则返回该对象。如果小于minmumCapacity,则创建一个新的容量。

 方法注意:

<1>如果该类的容量大于minmumCapacity,则返回该对象。如果小于minmumCapacity,则创建一个新的容量。

<2>新建的容量为原来的两倍+2。

继续阅读