使用String類的compareTo方法比較規(guī)則詳解
String類的compareTo方法比較規(guī)則
1、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;
}private final char value[]; //String類使用char[]來保存字符串
2、代碼分析
A、首先會將調用compareTo方法的 str1 的長度保存到 len1 中,然后str2將作為實參傳入方法給到anotherString,并將anotherString長度保存到 len2 中,即:str2的長度。
B、然后調用 Math.min(len1, len2) 方法,得到長度中的最小值,用于決定后續(xù)字符依次循環(huán)比較的次數(shù)。
C、讓 v1 指向 str1 的 value數(shù)組,v2 指向 str2 的 value數(shù)組。
D、進入while循環(huán)進行單個字符依次循環(huán)比較,循環(huán)條件 k < lim,k 從 0 開始,因為數(shù)組下標從0開始,因此是小于 lim。
E、每次都將 v1 和 v2 中相同索引位置的字符取出來比較是否相同:
a、如果不相同:則直接結束compareTo方法的調用,直接返回兩個字符的ascii碼差值;
b、如果相同:則繼續(xù)比較下一個字符:
- 1、如果找到了不同的字符,仍然返回ascii碼差值;
- 2、如果在循環(huán)比較結束后,仍然沒有找到不同的字符,即:str1 和 str2前半部分的字符相同,則直接返回兩個字符串總長度之差,即:len1 - len2(str1.length - str2.length)。
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
springboot讀取.properties配置文件中的map和list類型配置參數(shù)方式
這篇文章主要介紹了springboot讀取.properties配置文件中的map和list類型配置參數(shù)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-03-03
Java程序員的10道常見的XML面試問答題(XML術語詳解)
包括web開發(fā)人員的Java面試在內的各種面試中,XML面試題在各種編程工作的面試中很常見。XML是一種成熟的技術,經(jīng)常作為從一個平臺到其他平臺傳輸數(shù)據(jù)的標準2014-04-04
SpringBoot全局異常攔截與自定義錯誤頁面實現(xiàn)過程解讀
本文介紹了SpringBoot中全局異常攔截與自定義錯誤頁面的實現(xiàn)方法,包括異常的分類、SpringBoot默認異常處理機制、全局異常攔截實現(xiàn)、自定義錯誤頁面實現(xiàn)以及兩者的結合使用,通過這些技術,可以提高系統(tǒng)的穩(wěn)定性和用戶體驗2025-12-12
java數(shù)組實現(xiàn)循環(huán)隊列示例介紹
大家好,本篇文章主要講的是java數(shù)組實現(xiàn)循環(huán)隊列示例介紹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽2022-01-01

