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