Java学习笔记6---字符串比较方法compareTo(String str)
方法原型为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;
如果一个字符串比较到最后一个字符了,另一个字符串还有其他未比较字符,则返回此两个字符串长度的差值。