代码实现
import java.util.Arrays;
public class MyStringBuffer {
private int capacity = 16;
private int length = 0;
private char[] value;
public MyStringBuffer(){
value = new char[capacity];
}
public MyStringBuffer(String str){
value = new char[str.length() + capacity];
length = str.length();
char[] ss = str.toCharArray();
for (int i = 0; i < ss.length; i++) {
value[i] = ss[i];
}
capacity = capacity + str.length();
}
public int capacity(){
return value.length;
}
@Override
public String toString() {
String result = new String(value,0,length);
return result;
}
public int length(){
return length;
}
public void append(String str){
char[] news = value;
while(str.length() > capacity - length){
//扩容
capacity = (capacity + 1) * 2;
value = new char[capacity];
}
char[] cs = new char[999];
//原数组为news,从0开始复制全部元素从value数组的0开始替换到value数组
System.arraycopy(news,0,value,0,news.length);
char[] ss = str.toCharArray();
//原数组为ss,从0开始复制全部元素到ss的末尾开始替换
System.arraycopy(ss,0,value,length,ss.length);
length += str.length();
}
public static void main(String[] args) {
MyStringBuffer sb = new MyStringBuffer("abcd");
System.out.println(sb.capacity);
System.out.println(sb.length);
System.out.println(sb.toString());
sb.append("efg");
System.out.println(sb.capacity);
System.out.println(sb.length);
System.out.println(sb.toString());
}
}
测试结果