实现一个自己的字符串类,实现一下方法indexOf() lastIndexOf() charAt(index) length() isEmpty()

来源:互联网 发布:oracle数据库连接器 编辑:程序博客网 时间:2024/05/22 14:28
import java.util.Arrays;/** * Created by Avery on 2017/6/30. */public class StringTest {    private  char value[];    public StringTest() {    }    public StringTest(String val) {        char[] value=val.toCharArray();        this.value = value;    }    public StringTest(StringTest original) {        this.value = original.value;        //this.hash = original.hash;    }    @Override    public String toString() {        return toString(value);    }    /**     * 把char数组转为String类型不用Arrays.toString()     * 原因是我不需要那些多余的逗号 以及[] 不需要形如这样的[h,e,l,l,o]     */    public static String toString(char[] a) {        if (a == null)            return "null";        int iMax = a.length - 1;        if (iMax == -1)            return "[]";        StringBuilder b = new StringBuilder();        for (int i = 0; ; i++) {            b.append(a[i]);            if (i == iMax)                return b.toString();        }    }    /**实现length()方法*/    public int length() {        return value.length;    }    /**实现isEmpty()*/    public boolean isEmpty(){        if(value==null||value.length==0)            return true;        else            return false;    }    /**实现indexOf方法  返回值是下标*/    public int indexOf(Object ch) {        //这里可以加一个判断传进来的是不是String类型然后再做相应处理        // 这里只考虑char型传入的是char型则可以正确处理传入的是其它类型抛异常        char c=(char)(ch);        for(int i=0;i<value.length;i++)            if(value[i]==c)                return i;//找到返回下标        return -1;//找不到返因-1    }    /**实现indexOf方法  返回值是下标*/    public int lastIndexOf(char ch){        for(int i=value.length-1;i>=0;i--)            if(value[i]==ch)                return i;        return -1;    }    /**实现charAt(index)方法*/    public char charAt(int index){        if ((index < 0) || (index >= value.length)) {            throw new StringIndexOutOfBoundsException(index);        }        return value[index];    }    public static void main(String[] args) {        StringTest str=new StringTest("hello");        System.out.println(str);//测试toString        System.out.println(str.indexOf('e'));//测试indexOf        System.out.println(str.lastIndexOf('a'));//测试lastIndexOf        String str1="123";        System.out.println(str.isEmpty());//false        StringTest str2=new StringTest();        System.out.println(str2.isEmpty());//true        System.out.println(str.charAt(1));//e    }}
阅读全文
0 0