String类的几个常用的方法的源代码
1、判断String是否为空的方法:isEmpty()
public boolean isEmpty() {
return value.length == 0;
}
2、返回String中的某一个字符方法:charAt(int Index)
public char charAt(int index) {
if((index < 0)||(index>value.length)) {
throw new StringIndexOutOfBoundsException(index);
}
return value[index];
}
3、返回String类的子字符串的方法:substring(int beginIndex, int endIndex)
public String substring(int beginIndex,int endIndex) {
if(beginIndex < 0) {
throw new StringIndexOutOfBoundsException(beginIndex);
}
if(endIndex > value.length) {
throw new StringIndexOutOfBoundsException(endIndex);
}
int subLen = beginIndex -endIndex;
if(subLen < 0) {
throw new StringIndexOutOfBoundsException(subLen);
}
return ((beginIndex == 0)&&(endIndex == value.length))? this:new String(value,beginIndex,subLen);
}
4、比较两个字符串的方法equals(Object anObject)
public boolean equals(Objet anObject) {
if(this == anObject) {
return true;
}
if(anObject instanceof String) {
String anotherString = (String)anObject;
int n = value.length;
if(n == anotherString.value.length) {
char[] v1 = value;
char[] v2 = anotherString.value;
int i = 0;
while(n-- != 0) {
if(v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
return false;
}
总的代码
public final class String implements java.io.Serializable,Comparable<String>,CharSequence{
private final char value[];//定义了一个value[]数组
private int hash;//定义哈希值
public String(String original) {//构造函数进行初始化
this.value = original.value;
this.hash = original.hash;
}
public boolean isEmpty() {//判断String数组是否为空
return value.length == 0;
}
public char charAt(int index) {//返回数组的其中一个元素
if((index < 0)||(index>value.length)) {
throw new StringIndexOutOfBoundsException(index);
}
return value[index];
}
public String substring(int beginIndex,int endIndex) {
if(beginIndex < 0) {
throw new StringIndexOutOfBoundsException(beginIndex);
}
if(endIndex > value.length) {
throw new StringIndexOutOfBoundsException(endIndex);
}
int subLen = beginIndex -endIndex;
if(subLen < 0) {
throw new StringIndexOutOfBoundsException(subLen);
}
return ((beginIndex == 0)&&(endIndex == value.length))? this:new String(value,beginIndex,subLen);
}
public boolean equals(Objet anObject) {
if(this == anObject) {
return true;
}
if(anObject instanceof String) {
String anotherString = (String)anObject;
int n = value.length;
if(n == anotherString.value.length) {
char[] v1 = value;
char[] v2 = anotherString.value;
int i = 0;
while(n-- != 0) {
if(v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
return false;
}
}