CompareTo是java.lang包下Comparable接口里面的一个方法.
String类实现了该方法.下面是String类的实现的CompareTo方法的源码.下面我给你简单的解释下这个源码把
public int compareTo(String anotherString) {
int len1 = count;//定义第一个字符串的长度
int len2 = anotherString.count;//定义第一个字符串的长度
int n = Math.min(len1, len2);//取得长度小的字符串,并把小串的长度赋给n
char v1[] = value;//将第一个字符串转换为一个字符数组
char v2[] = anotherString.value;//将第二个字符串转换为一个字符数组
int i = offset;//将第一个字符数组的个数赋给i
int j = anotherString.offset;将第er个字节数组的个数赋给j
if (i == j) {//做判断如果2个字节数组的个数一样,就每个字符做比较,返回的是这两个字符对应的ASCII码之差.
int k = i;
int lim = n + i;
while (k < lim) {
char c1 = v1[k];
char c2 = v2[k];
if (c1 != c2) {
return c1 - c2;
}
k++;
}
} else {//如果2个字符数组长度不一样,则比较小字符串的的长度次就可以了.返回的也是两个字符对应的ASCII码之差.
while (n-- != 0) {
char c1 = v1[i++];
char c2 = v2[j++];
if (c1 != c2) {
return c1 - c2;
}
}
}
return len1 - len2;
}
|