Java源码___AbstractStringBuilder抽象类(二)

java.lang.AbstractStringBuilder分析摘要:
<1>trimToSize( )方法
<2>setLength( int newLength )方法
<3>icharAt(int index)方法
<4>codePointAt(int index)方法

1.trimToSize( )方法
 该方法会改变该类缓存区的大小。

public void trimToSize(){
    if(count < value.length){
        value = Arrays.copyof(value, count);
    }
}

 方法注意:
该方法的使用可能会减少字符序列的存储大小,如果容量大小本身超过了存储字符所需要的容量,那么就会将该容量减少到刚好能够存储这些字符的容量。该方法主要的目的是为了提高空间效率,并且会影响后续调用的capacity()方法的返回值。

 
2.setLength((int newLength)方法
 该方法用于改变缓存字符的字符长度和字符内容。

public void setLength(int newLength){
    if(newLength < 0){
        throw new StringIndexOutOfBoundsException(newLength);
    }
    //保证容量够用
    ensureCapacityInternal(newLength);

    if(count < newLength){
        Arrays.fill(value, count, newLength, '\0');
    }
    count = newLength;
}

基本属性:public公有。
参数:newLength
参数说明:要改变成的字符长度大小。
异常:StringIndexOutOfBoundsException
异常说明:如果传入的参数为负数的话,则会出现该异常。

该方法的源码思路是:
<1>首先判断是否参入实参newLength是否为负数,如果为负数,则抛出字符串角标越界异常。
<2>然后使用ensureCapacity方法来调整缓存区大小,不够则增加,够则不增加。
<3>如果是增加字符长度,则会保留原来的字符,然后不够的用空字符补上。
<4>将count的大小调整为newLength。

 

3.charAt(int index)方法
 重写字符序列接口CharSequence的方法,用于获取特定特定位置的字符。

@Override
public char charAt(int index){
    if((index<0) || (index>=count)){
        throw new StringIndexOutOfBoundsException(index);
    }
    return value[index];
}

基本属性:public公有
参数:index
参数说明:要获取的位置,即下标。
异常:StringIndexOfBoundsException(index)
异常说明:如果传入的实参index为负数或者超过了字符的长度,则抛出此异常。
返回值:char
返回值说明:字符,指定位置对应的char字符。

方法说明事项:
该方法会返回对应位置的字符,所以如果传入的字符不存在,就会抛出越界异常。
该方法实际上返回的就是value[index]的字符。

 
4. codePointAt(int index)方法
 获取对应位置的字符的Unicode解码值。

public int codePointAt(int index){
    if((index<0) || (index>=count)){
        throw new StringIndexOutOfBoundsException(index);
    }
    return Character.codePointAtImpl(value, index, count);
}

基本属性:public公有。
参数:index
参数说明:要获取的位置,即下标位置。
异常:StringIndexOfBoundsException(index)
异常说明:如果要获取的位置不存在,则抛出此异常。
返回值:int
返回值说明:返回某个字符的Unicode解码值。

该方法的主要作用是:返回字符串中下表为index的字符的Unicode的解码值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值