zoukankan      html  css  js  c++  java
  • 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("
    ");
            //两个字符串相同时,返回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("
    ");
            
            System.out.println("如果恰好是最后一个字符不同,则返回最后一个字符的ascii差值:");
            System.out.println( str3 + " 与 " + str7 + " 按字典顺序比较,结果为: " + str3.compareTo(str7) );
            System.out.println( str4 + " 与 " + str8 + " 按字典顺序比较,结果为: " + str4.compareTo(str8) );
            System.out.println("
    ");
            
            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("
    ");
            
            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;

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

  • 相关阅读:
    Linq增删查改
    AspNetPager 分页显示
    简单C#数据库操作类
    SQL重复记录处理(查找,过滤,删除)
    Asp.Net配置Web.config连接数据库SqlServer
    转:Asp.Net网站项目发布到IIS后验证码不能显示的问题解决
    将一行含有日期范围的数据按照单日日期拆分
    asp.net过滤HTML标签的几个函数
    循环批量更新的的存储过程(属于转载)
    CheckBox的CheckedChanged事件获取所在GridView中的Cell值
  • 原文地址:https://www.cnblogs.com/chanchan/p/7659051.html
Copyright © 2011-2022 走看看