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;
}
整个思路非常简单,跟字典排序是一样的,即比较参与的两个字符串,如果首字符相同,则比较下一个字符,直到有不同的为止,返回不同的字符之间的ASC码差值。如果两个字符串不一样长,参与比较的字符又完全一样(即一个是另一个的子串),则返回两个字符串的长度差值。(负数表示第一个串小,0表示两串相等,正数表示第一串较大)。
示例代码展示:
System.out.println("ab".compareTo("a"));
System.out.println("abcdef".compareTo("a"));
System.out.println("abcdef".compareTo("abc"));
System.out.println("abcdef".compareTo("ace"));
output:
1
5
3
-1
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/qq_43842093/article/details/122934186
内容来源于网络,如有侵权,请联系作者删除!