代码实现
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 ] ;
System . arraycopy ( news, 0 , value, 0 , news. length) ;
char [ ] ss = str. toCharArray ( ) ;
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 ( ) ) ;
}
}
测试结果