源码:
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;
}
compareTo()的返回值是整型,它是先比较对应字符的大小(ASCII码顺序),
如果第一个字符和参数的第一个字符不等,结束比较,返回他们之间的差值。
如果第一个字符和参数的第一个字符相等,则以第二个字符和参数的第二个字符作比较,
以此类推,直至比较的字符或被比较的字符有一方全比较完,这时就比较字符的长度。
代码:
public class StringTest {
public static void main(String[] args) {
System.out.println("qwe".compareTo("asd")); //q是113 a是97 。113-97=16
System.out.println("201801".compareTo("201802"));//前五位相同 , 1是49,2是50,49-50=-1
}
}
ASCII表: