方法原型為int compareTo(String str),返回值為int型,參數為字符串類型。
下面是簡單示例:

/* * compareTo()返回參與比較的兩個字符串的ascii碼差值 * Object類.... */ package packagetest; public class StringCompareEmp{ public void printCompare() { // public static void main(String[] args) { // int indexI = 3; // String firststr = "This String"; // String secondstr = "this string"; // Object objstr = firststr; String str1 = "a"; String str2 = "b"; String str3 = "abc"; String str4 = "ab"; String str5 = "abcde"; // String str6 = "a"; String str7 = "abb"; String str8 = "ae"; // String str9 = "c"; String str10 = "abcd"; String str11 = "abea"; String str12 = "cde"; // System.out.println( firststr + " 第" + (indexI+1) + "個字符是:" + firststr.charAt(indexI) );//char charAt(int) // System.out.println( firststr + " 與 " + secondstr + " 按字典順序比較,結果為:" + firststr.compareTo(secondstr) );//int compareTo(String),按字典順序比較兩個字符串 // System.out.println( firststr + " 與 " + secondstr + " 按字典順序比較並且不考慮大小寫,結果為:" + firststr.compareToIgnoreCase(secondstr) );//int compareToIgnoreCase(String),按字典順序比較兩個字符串,不考慮大小寫 // System.out.println( firststr + " 與 " + objstr + " 比較,結果為:" + firststr.compareTo(objstr.toString()) );//int compareTo(Object),把字符串與另一個對象比較 // 兩個字符串首字母不同,則返回首字母的ascii差值 System.out.println( "兩個字符串首字母不同,則返回首字母的ascii差值:" ); System.out.println( str1 + " 與 " + str2 + " 按字典順序比較,結果為: " + str1.compareTo(str2) ); System.out.println( str4 + " 與 " + str2 + " 按字典順序比較,結果為: " + str4.compareTo(str2) ); System.out.println( str5 + " 與 " + str2 + " 按字典順序比較,結果為: " + str5.compareTo(str2) ); System.out.println( str1 + " 與 " + str12 + " 按字典順序比較,結果為: " + str1.compareTo(str12) ); System.out.println( str4 + " 與 " + str12 + " 按字典順序比較,結果為: " + str4.compareTo(str12) ); System.out.println( str5 + " 與 " + str12 + " 按字典順序比較,結果為: " + str5.compareTo(str12) ); System.out.println("\n"); //兩個字符串相同時,返回0 // System.out.println("兩個字符串相同,返回0:"); //首字母相同,則比較下一個字符,直到有不同的為止或比較到字符串最后一個字符,返回該不同的字符的ascii差值;如果兩字符串長度不同,可以參與比較的字符又完全一樣,返回兩個字符串的長度差值 // System.out.println( "首字母相同,則比較下一個字符,直到有不同的為止或比較到字符串最后一個字符,返回該不同的字符的ascii差值;如果兩字符串長度不同,可以參與比較的字符又完全一樣,返回兩個字符串的長度差值:" ); System.out.println("首字母相同,則比較下一個字符,直到有不同的為止,返回此兩個不同字符的ascii差值。"); System.out.println( str10 + " 與 " + str11 + " 按字典順序比較,結果為: " + str10.compareTo(str11) ); System.out.println( str10 + " 與 " + str7 + " 按字典順序比較,結果為: " + str10.compareTo(str7) ); System.out.println( str11 + " 與 " + str3 + " 按字典順序比較,結果為: " + str11.compareTo(str3) ); System.out.println("\n"); System.out.println("如果恰好是最后一個字符不同,則返回最后一個字符的ascii差值:"); System.out.println( str3 + " 與 " + str7 + " 按字典順序比較,結果為: " + str3.compareTo(str7) ); System.out.println( str4 + " 與 " + str8 + " 按字典順序比較,結果為: " + str4.compareTo(str8) ); System.out.println("\n"); System.out.println("特殊情況下,最后一個字符也相同,則兩字符串相同,返回最后一個字符的ascii差值,即返回0:"); System.out.println( str1 + " 與 " + str1 + " 按字典順序比較,結果為: " + str1.compareTo(str1) ); System.out.println( str4 + " 與 " + str4 + " 按字典順序比較,結果為: " + str4.compareTo(str4) ); System.out.println( str5 + " 與 " + str5 + " 按字典順序比較,結果為: " + str5.compareTo(str5) ); System.out.println("\n"); System.out.println("如果其中一個字符串比較到最后一個字符了,另一個字符串還有其他未比較字符,則返回兩字符串長度的差值:"); System.out.println( str4 + " 與 " + str1 + " 按字典順序比較,結果為: " + str4.compareTo(str1) ); System.out.println( str3 + " 與 " + str1 + " 按字典順序比較,結果為: " + str3.compareTo(str1) ); System.out.println( str3 + " 與 " + str4 + " 按字典順序比較,結果為: " + str3.compareTo(str4) ); System.out.println( str5 + " 與 " + str1 + " 按字典順序比較,結果為: " + str5.compareTo(str1) ); System.out.println( str5 + " 與 " + str4 + " 按字典順序比較,結果為: " + str5.compareTo(str4) ); System.out.println( str5 + " 與 " + str3 + " 按字典順序比較,結果為: " + str5.compareTo(str3) ); System.out.println( str3 + " 與 " + str5 + " 按字典順序比較,結果為: " + str3.compareTo(str5) ); } }
運行結果如下:
兩個字符串首字母不同,則返回首字母的ascii差值:
a 與 b 按字典順序比較,結果為: -1
ab 與 b 按字典順序比較,結果為: -1
abcde 與 b 按字典順序比較,結果為: -1
a 與 cde 按字典順序比較,結果為: -2
ab 與 cde 按字典順序比較,結果為: -2
abcde 與 cde 按字典順序比較,結果為: -2
首字母相同,則比較下一個字符,直到有不同的為止,返回此兩個不同字符的ascii差值。
abcd 與 abea 按字典順序比較,結果為: -2
abcd 與 abb 按字典順序比較,結果為: 1
abea 與 abc 按字典順序比較,結果為: 2
如果恰好是最后一個字符不同,則返回最后一個字符的ascii差值:
abc 與 abb 按字典順序比較,結果為: 1
ab 與 ae 按字典順序比較,結果為: -3
特殊情況下,最后一個字符也相同,則兩字符串相同,返回最后一個字符的ascii差值,即返回0:
a 與 a 按字典順序比較,結果為: 0
ab 與 ab 按字典順序比較,結果為: 0
abcde 與 abcde 按字典順序比較,結果為: 0
如果其中一個字符串比較到最后一個字符了,另一個字符串還有其他未比較字符,則返回兩字符串長度的差值:
ab 與 a 按字典順序比較,結果為: 1
abc 與 a 按字典順序比較,結果為: 2
abc 與 ab 按字典順序比較,結果為: 1
abcde 與 a 按字典順序比較,結果為: 4
abcde 與 ab 按字典順序比較,結果為: 3
abcde 與 abc 按字典順序比較,結果為: 2
abc 與 abcde 按字典順序比較,結果為: -2
test
總結:
兩字符串首字母不同則返回首字母的ascii差值;
首字母相同,則比較下一位,直到有不同的字符為止,返回此兩個不同字符的ascii差值;
如果恰好是最后一個字符不同,則返回最后一個字符的ascii差值;
特殊情況下,最后一個字符也相同,則兩個字符串相同,返回最后一個字符的ascii差值,也就是0;
如果一個字符串比較到最后一個字符了,另一個字符串還有其他未比較字符,則返回此兩個字符串長度的差值。