Java 源码 之 String.CompareTo
public int compareTo(String anotherString) {
int len1 = value.length;
int len2 = anotherString.value.length;
int lim = Math.min(len1, len2);
char v1[] = value;
char v2[] = anotherString.value;
int k = 0;
while (k < lim) {
char c1 = v1[k];
char c2 = v2[k];
if (c1 != c2) {
return c1 - c2;
}
k++;
}
return len1 - len2;
}
- 首先取出两个需要比较的String的长度
- 取出min (需要遍历整个String)
- Note:java中String 底层还是char数组 因此value 即为char数组
- 判断两char的ascII码,一旦有一两个ascII码不同直接返回
- 遍历到最后如果都是相同则返回两个String的差值
总结
在Java中判断两个String大小是先逐个字符进行对比,如果有字符不同则直接返回(字符ascII码小则String小)
若两个字符串在lim长度内,字符都相等那么则判断两String长度(长度小的String小)
|