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) );

    }
}
View Code

 

运行结果如下:

两个字符串首字母不同,则返回首字母的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;

如果一个字符串比较到最后一个字符了,另一个字符串还有其他未比较字符,则返回此两个字符串长度的差值。

posted @ 2017-10-13 00:23  蝉蝉  阅读(2236)  评论(0编辑  收藏  举报