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 } }
实现一个自己的字符串类,实现一下方法indexOf() lastIndexOf() charAt(index) length() isEmpty()
最新推荐文章于 2024-05-16 15:13:40 发布