Java高级特性--自定义一个StringBuilder的类

                          案例讲解--自定义一个StringBuilder的类

Java高级特性--自定义一个StringBuilder的类_第1张图片

一:案例设计介绍

自义一个M定yStringBuilder来实现StringBuilder的功能

二:案例设计

  1. 实现append()方法追加字符串的功能
  2. 实现length()方法统计字符串的功能
  3. 实现capacity()方法获取容量大小
  4. 实现toString()方法,完成字符串的输出

三:方案实施

class MyStringBuilder{
    构造方法{
        //做初始化
    }
    //常用的方法
    public int append();
    public int length();
    public capacity();
    public toString();
}

四:具体实施步骤

public class StringBuilder{
    public static void main(String []args){
        MyStringBuilder msb=new MyStringBuilder();
        msb.append("abc").append("world").append("hello");
        //msb.append("world");
        System.out.println("字符个数:"+msb.length());
        System.out.println("容量大小:"+msb.capacity());
        System.out.println("输出字符串:"+msb.toString());
    }
}
class MyStringBuilder{
    private char [] value;  //字符数组
    private int count=0;   //字符数组中存放字符的个数
    public MyStringBuilder(){
        value=new char[16];
    }
    public MyStringBuilder(int capacity){
        value=new char[capacity];
    }
    public MyStringBuilder(String str){
        value=new char[str.length()+16];
    }
    //得到字符数组中的字符个数
    public int length(){
        return count;
    }
    //返回容器容量大小
    public int capacity(){
        return value.length;
    }
    //实现字符串的追加(添加)
    public MyStringBuilder append(String str){
        int len=str.length;   //获取要添加字符串的长度
        //确保所添加的字符串能放到字符数组中
        ensureCapacity(count+len);
        //把要添加的字符串追加到新的指定数组的指定位置后面
         str.getChars(0,len,value,count);
         count+=len;    //元素的个数增加了
         return this;
    }
    public void ensureCapacity(int capacity){
        //数组超出容量的大小
        if(capacity-value.length>0){
        int newCapacity=value.length*2+2;   //扩容后新字符数组的大小
        value=Arrays.copyOf(value,newCapacity);
        }
    }
    //把字符串数组的字符转换为字符串显示
    public String toString(){
        return new String(value,0,count);
    }
}

 

转载于:https://www.cnblogs.com/xiaomu0/p/10771512.html

你可能感兴趣的:(Java高级特性--自定义一个StringBuilder的类)