package day6;
public class MyStringBuffer3 implements IStringBuffer{
int capacity = 16;
int length = 0;
char[]value;
public MyStringBuffer3(){//无参构造
value = new char[capacity];
}
public MyStringBuffer3(String str){//有参构造
this();//调用无参构造的第一条语句
if(null==str)//如果str是空,就返回空
return;
if(capacity<str.length()){//如果容量小于str的长度
capacity = value.length*2;//就将容量赋值为value数组长度的2倍
value = new char[capacity];//根据容量给value赋值
}
if(capacity>=str.length())//如果容量大于str的长度
/*
* 例如:
String[] arr = {"A","B","C","D","E","F"};
System.arraycopy(arr ,3,arr,2,2);
从下标为3的位置开始复制,复制的长度为2(复制D、E),从下标为2的位置开始替换为D、E
复制后的数组为:
String[] arr = {"A","B","D","E","E","F"};
*/
System.arraycopy(str.toCharArray(), 0, value, 0, str.length());//先将str转成字符数组的形式,以这个字符数组为要复制的数组,
//复制的起始位置为0,目标数组是value,目标数组的下标位置为0,复制的长度是str的长度,也就是整个str
length = str.length();//将str的长度赋值给成员变量Length
}
@Override
public void append(String str) {
// TODO Auto-generated method stub
}
@Override
public void append(char c) {
// TODO Auto-generated method stub
}
@Override
public void insert(int pos, char b) {
// TODO Auto-generated method stub
}
@Override
public void insert(int pos, String b) {
// TODO Auto-generated method stub
}
@Override
public void delete(int start) {
// TODO Auto-generated method stub
}
@Override
public void delete(int start, int end) {
// TODO Auto-generated method stub
}
@Override
public void reverse() {
for (int i = 0; i < length / 2; i++) {//将value数组进行反转操作
char temp = value[i];
value[i] = value[length - i - 1];
value[length - i - 1] = temp;
}
}
@Override
public int length() {//返回Length的值
return length;
}
public String toString(){//多写了一个toString方法
char[]realValue = new char[length];//根据成员变量length创建一个新的数组realvalue
System.arraycopy(value, 0, realValue, 0, length);//从0开始复制value,复制长度为length,复制到数组realvalue
return new String(realValue);//返回根据realvalue数组创建的新字符串
}
public static void main(String[] args) {
MyStringBuffer3 str = new MyStringBuffer3("there light");
str.reverse();//调用重写的反转函数
System.out.println(str);
}
}
MyStringBuffer中的反转 reverse
最新推荐文章于 2021-12-16 23:01:00 发布