zoukankan      html  css  js  c++  java
  • String的compareTo用法

    StringcompareTo其实就是依次比较两个字符串ASC码。如果两个字符的ASC码相等则继续后续比较,否则直接返回两个ASC的差值。如果两个字符串完全一样,则返回0。来看一下代码。

    public int compareTo(String anotherString) {

        int len1 = count;

        int len2 = anotherString.count;

        //获取到两个字符串的较短的长度

        int n = Math.min(len1, len2);

        char v1[] = value;

        char v2[] = anotherString.value;

        int i = offset;

        int j = anotherString.offset;

        if (i == j) {

            int k = i;

            int lim = n + i;

            while (k < lim) {

                char c1 = v1[k];

                char c2 = v2[k];

                //如果两个字符的ASC不相同,则直接返回

    if (c1 != c2) {

                    return c1 - c2;

                }

                k++;

            }

        } else {

            while (n-- != 0) {

               char c1 = v1[i++];

               char c2 = v2[j++];

                 //如果两个字符的ASC不相同,则直接返回

               if (c1 != c2) {

                   return c1 - c2;

               }

            }

        }

        //如果都一样,返回两个字符串的长度查

        return len1 - len2;

        }
     

    根据上面的代码,我们可以很方便的计算吃两个字符串的comperTo的值:

     

           "abcd".compareTo("adef")== -2

          "abc".compareTo("abcdef")== -3

          "abc".compareTo("abc") == 0

     

          但一直在想着compareTo可以用于实际中什么应用呢??我这里例举使用compareTo进行简单字符串的排序。(例如使用compareTo进行姓名的排序)

    Java代码 复制代码 收藏代码
    1. //需要进行排序的字符串  
    2. String[] array = new String[] { "lilei""libai""james""poly",  
    3.                 "wobfei" };  
    4. //使用简单的循环排序  
    5.         for (int i = 0; i < array.length - 1; i++) {  
    6.             for (int j = i + 1; j < array.length; j++) {  
    7.                 if (array[i].compareTo(array[j]) > 0) {  
    8.                     String temp = array[i];  
    9.                     array[i] = array[j];  
    10.                     array[j] = temp;  
    11.                 }  
    12.             }  
    13.         }  

     

     

     

    使用上面针对String的排序以后,字符串的内容将会是:

     

    james libai  lilei poly  wobfei


    补充:

    compareTo()的返回值是整型,它是先比较对应字符的大小(ASCII码顺序),如果第一个字符和参数的第一个字符不等,结束比较,返回他们之间的

    差值,如果第一个字符和参数的第一个字符相等,则以第二个字符和参数的第二个字符做比较,以此类推,直至比较的字符或被比较的字符有一方

    全比较完,这时就比较字符的长度.

    例:
    String s1 = "abc";
    String s2 = "abcd";
    String s3 = "abcdfg";
    String s4 = "1bcdfg";
    String s5 = "cdfg";
    System.out.println( s1.compareTo(s2) ); // -1 (前面相等,s1长度小1)
    System.out.println( s1.compareTo(s3) ); // -3 (前面相等,s1长度小3)
    System.out.println( s1.compareTo(s4) ); // 48 ("a"的ASCII码是97,"1"的的ASCII码是49,所以返回48)
    System.out.println( s1.compareTo(s5) ); // -2 ("a"的ASCII码是97,"c"的ASCII码是99,所以返回-2)

  • 相关阅读:
    POJ 1003 解题报告
    POJ 1004 解题报告
    POJ-1002 解题报告
    vi--文本编辑常用快捷键之光标移动
    常用图表工具
    September 05th 2017 Week 36th Tuesday
    September 04th 2017 Week 36th Monday
    September 03rd 2017 Week 36th Sunday
    September 02nd 2017 Week 35th Saturday
    September 01st 2017 Week 35th Friday
  • 原文地址:https://www.cnblogs.com/yangkai-cn/p/4016669.html
Copyright © 2011-2022 走看看