java自己手写一个简易的StringBuilder类

public class MyStringBuilder {
    private char[] result;//定义一个字符串数组作为返回值
    private int count;//记录数据的长度

    public MyStringBuilder() {
        this(16); //默认长度16
    }

    public MyStringBuilder(int capacity) {
        result = new char[capacity];
    }

    public MyStringBuilder(String str) {
        result = str.toCharArray();//将字符串转化为字符数组
        count = str.length();
    }

    public int length() {
        return count;
    }

    public void append(char c) {
        result = Arrays.copyOf(result, count + 1);//将result复制过去,并且扩容
        result[count++] = c;//赋值给result[count],然后count+1
    }

    public void append(String str) {
        result = Arrays.copyOf(result, count + str.length());
        for (int i = 0; i < str.length(); i++) {
            result[count++] = str.charAt(i);
        }
    }

    public String toString() {
        return new String(result);
    }

    public void reverse() {
        char temp;
        int length = result.length;
        for (int i = 0; i < length / 2; i++) {
            temp = result[i];
            result[i] = result[length - i - 1];
            result[length - i - 1] = temp;
        }
    }
}

 测试

public class StringBuilderTest {
    public static void main(String[] args) {
        MyStringBuilder myStringBuilder = new MyStringBuilder("123");
        System.out.println(myStringBuilder.length());
        myStringBuilder.append("456789");
        myStringBuilder.append("123");
        System.out.println(myStringBuilder.toString());
        myStringBuilder.reverse();
        System.out.println(myStringBuilder.toString());
    }
}

结果:

java自己手写一个简易的StringBuilder类_第1张图片

你可能感兴趣的:(java)