实现String类部分方法
package com.kongdechang.api;
public final class Str { // 不可修改
private final char[] cv; // charValue
public Str() {
this.cv = new char[0]; // this.value = "".value;
}
public Str(String str) {
this.cv = str.toCharArray();
}
public Str(char[] cv) {
this.cv = cv;
}
public int length(){
return cv.length; // 字符数组长度
}
public boolean idEmpty(){
return cv.length==0;
}
public char charAt(int index){
if (index<0||index>=cv.length){
System.out.println("数组索引越界");
}
return cv[index];
}
public boolean equals(Object obj){
if (this==obj){ // 比较地址
return false;
}
if (obj instanceof Str){//一个对象是否为一个类的实例
Str str = (Str)obj; // 强转
int x = cv.length; // 当前对象长度
int y = str.cv.length;//要比较对象长度
if (x==y){
char[] x1 = cv; // 当前数组
char[] y1 = str.cv;// 要比较对象的数组
for (int i = 0; i < x; i++) {
if (x1[i]!=y1[i]){
return false;
}
return true;
}
}
return true;
}
return false;
}
public int indexOf(int ch){
return indexOf(ch,0);
}
public int indexOf(int ch,int index){
int num = 0;
if(index<0) {
System.out.println("索引不能小于0");
}else if(cv.length-index<0){
System.out.println("索引越界");
}else if (index==0){
for (int i = 0; i < cv.length; i++) {
if (ch==cv[i])
num = i;
}
}else if (index>0){
for (int i = 0; i <index; i++) {
if (ch==cv[i])
num = i;
}
}
return num;
}
public Str subStr(int a){
return subStr(a,0);
}
public Str subStr(int a,int b){
if(a<0){
System.out.println("索引不能小于0");
}
int subLen =cv.length-a;
if (subLen<0||a<0) {
System.out.println("索引越界");
return new Str();
}
if (b==0){
char[] c = new char[subLen];
for (int i = a,j=0; i < cv.length; i++,j++) {
c[j]=cv[i];
}
return new Str(c);
}
if (b>0){
char[] c = new char[b-a];
for (int i = a,j=0; i < b; i++,j++) {
c[j]=cv[i];
}
return new Str(c);
}
return new Str();
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < cv.length; i++) {
sb.append(charAt(i));
}
return new String(sb);
}
}
以下是调用
package com.kongdechang.api;
public final class Main {
public static void main(String[] args) {
char[] chs = new char[]{'a','b','c','d','e','f'};
Str str = new Str(chs);
System.out.println(str.toString());
System.out.println(str.length());
System.out.println(str.charAt(0));
Str str1 = new Str();
Str str2 = new Str(chs);
System.out.println(str.equals(str));
System.out.println(str.equals(str2));
System.out.println(str.indexOf('c'));
System.out.println(str.indexOf('d',5));
System.out.println(str.subStr(2));
System.out.println(str.subStr(2,4));
Str str3 = new Str("123456");
System.out.println(str3);
}
}
打印结果
abcdef
6
a
false
true
2
3
cdef
cd
123456