您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關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; }
下面的是我自己寫的山寨compareTo()方法, 經測試, 結果與compareTo(String otherString)返回一致
說明:
1. 為避免沖突, 我定義的方法名為compares
2. 注釋中已經詳細地記錄了分析思路, 故對代碼不做過多說明
public class StringDemo { @Test public void test() { // 因為o的ASCII碼為: 111 // 因為a的ASCII碼為: 97 // 所以差為 : 111 - 97 = 14 // 返回值為:14, 與compareTo返回結果一致 System.out.println(compares("hellojava", "hellajava")); } public static int compares(String firstString, String lastString) { /* * 算法思路分析: * 1. 獲取2個字符串, 首先把2個字符串都轉化為字符數組 (為后面一個一個字符進行比較做鋪墊) * 2. 獲取2個字符串的長度, 并把最短的字符串長度作為循環的次數 (這樣可以避免數組越界的異常) * 3. 把2個字符串從0開始遍歷, 比較每一個字符, 若字符不相等時, 則返回兩個字符串的差值 * 4. 如果遍歷的字符串都相等時, 則返回兩個字符串的長度差 * * 方法結果: * 1. 若兩個字符串長度和字符都相等時, 則返回0 * 2. 若兩個字符長度不相等, 但大串完全包含(順序和字符都相等)小串字符時, 則返回兩個字符串的長度的差值 * 舉例: * 大串: helloworlds * 小串: helloworld * 因為大串完全包含小串, 所以返回長度的差值, 為1 * 3. 若兩個字符串長度和字符都不相等時, 則返回比較過程中, 某個索引位置上的字符之差 * 舉例: * 串1: hellojavas * 串2: hellajava * 遍歷比較后, 索引4的字符不同, 所以返回兩個字符的差值14, 'o' - 'a' = 14 */ /* * 1. 獲取2個字符串, 首先把2個字符串都轉化為字符數組 (為后面一個一個字符進行比較做鋪墊) */ char[] firstCh = firstString.toCharArray(); char[] lastCh = lastString.toCharArray(); /* * 2. 獲取2個字符串的長度, 并把最短的字符串長度作為循環的次數 (這樣可以避免數組越界的異常) */ int firstLength = firstCh.length; int lastLength = lastCh.length; int lim = Math.min(firstLength, lastLength); // 用k記錄比較的索引 int k = 0; while(k < lim) { char c1 = firstCh[k]; char c2 = lastCh[k]; // 3. 把2個字符串從0開始遍歷, 比較每一個字符, 若字符不相等時, 則返回兩個字符串的差值 if(c1 != c2) { return c1 - c2; } // 如果字符相等, 則讓索引加1 k++; } // 4. 如果遍歷的字符串都相等時, 則返回兩個字符串的長度差 return firstLength - lastLength; } }
感謝各位的閱讀!關于“java之String類的compareTo方法怎么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。