Java中String的比较逻辑
一、提出问题
字符串如何进行大小的对比?
二、解决问题
2.1 参考源码
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; // 对比长度
}
源码先获取两个字符串中长度较小的字符串的长度n,遍历当前字符串与对比字符串第0个到第n-1个字符,比较字符的大小;
如果前n个字符都相等,就对比两个字符串的长度,长度越长,字符串越大。
2.2 一些常见字符的值
'0' - '9' -> 48 ~ 57
'A' - 'Z' -> 65 ~ 90
'a' - 'z' -> 97 ~ 122
小写字母字符值 > 大写字母字符值 > 数字字符值