美文网首页
String的compareTo方法

String的compareTo方法

作者: 因你而在_caiyq | 来源:发表于2019-03-29 17:14 被阅读0次

    原创文章,转载请注明原文章地址,谢谢!

    compareTo方法

    public int compareTo(String anotherString)
    其官方定义是,按字典顺序比较两个字符串。该比较基于字符串中各个字符的Unicode值。将此String对象表示的字符序列与参数字符串所表示的字符序列进行比较。如果按字典顺序此String对象在参数字符串之前,则比较结果为一个负整数。如果按字典顺序此String对象位于参数字符串之后,则比较结果为一个正整数。如果这两个字符串相等,则结果为0;compareTo只有在方法equals(Object)返回true时才返回0。

    字典排序
    如果这两个字符串不同,则要么它们在某个索引处具有不同的字符,该索引对二者均为有效索引,要么它们的长度不同,或者同时具备上述两种情况。如果它们在一个或多个索引位置上具有不同的字符,假设 k 是这类索引的最小值;则按照 < 运算符确定的那个字符串在位置 k 上具有较小的值,其字典顺序在其他字符串之前。这种情况下,compareTo 返回这两个字符串在位置 k 处的两个不同的 char 值,即值:this.charAt(k)-anotherString.charAt(k)。如果它们没有不同的索引位置,则较短字符串在字典顺序上位于较长字符串的前面。这种情况下,compareTo 返回这两个字符串长度的不同,即值:this.length()-anotherString.length()。

    • 第一个字符串和第二个字符串的第一个字符不相等,那么这两个字符串都按照第一个字符的ASCII码的顺序进行比较,其比较结果返回一个整型。
    public static void main(String[] args){
        //hello 第一个字符 h 的ASCII值为104
        String s1 = "hello";
        //world 第一个字符 w 的ASCII值为119
        String s2 = "world";
        //比较第一个字符,调用方s1减去s2
        System.out.println(s1.compareTo(s2));//-15
        //比较第一个字符,调用方s2减去s1
        System.out.println(s2.compareTo(s1));//15
    }
    
    • 第一个字符串和第二个字符串的第一个字符串相等,那么就取这两个字符串的第二个字符比较,如果第二个字符还是相等,那就比较第三个字符......以此类推,直到两个字符串中出现不一样的字符可以比较其字典顺序为止。
    public static void main(String[] args){
        //hello 第二个字符 e 的ASCII值为101
        String s1 = "hello";
        //world 第二个字符 i 的ASCII值为105
        String s2 = "hi";
        //比较第一个字符,相等,则比较第二个字符,调用方s1减去s2
        System.out.println(s1.compareTo(s2));//-4
        //比较第一个字符,相等,则比较第二个字符,调用方s2减去s1
        System.out.println(s2.compareTo(s1));//4
    }
    
    • 如果两个比较的字符串前面几个字符都相等,但是第二个字符串比第一个字符串多几位,即第一个字符串是第二个字符串的子字符串,那么就比较着两个字符串的长度。
    public static void main(String[] args){
        String s1 = "hello";
        String s2 = "hello world";
        //s1是s2的子字符串,则比较位数,调用方s1减去s2位数
        System.out.println(s1.compareTo(s2));//-6
        //s1是s2的子字符串,则比较位数,调用方s2减去s1位数
        System.out.println(s2.compareTo(s1));//6
    }
    
    compareToIgnoreCase方法

    public int compareToIgnoreCase(String str)
    其官方定义是,不考虑大小写,按字典顺序比较两个字符串。此方法返回一个整数,它的正负号是调用compareTo的正负号,调用时使用了字符串的规范化版本,其大小写差异已通过对每个字符调用Character.toLowerCase(Character.toUpperCase(character))得以消除。注意,此方法不 考虑语言环境,因此可能在某些特定的语言环境中产生不理想的排序。

    附:ASCII表
    ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符
    0 NUT 32 (space) 64 @ 96
    1 SOH 33 ! 65 A 97 a
    2 STX 34 " 66 B 98 b
    3 ETX 35 # 67 C 99 c
    4 EOT 36 $ 68 D 100 d
    5 ENQ 37 % 69 E 101 e
    6 ACK 38 & 70 F 102 f
    7 BEL 39 , 71 G 103 g
    8 BS 40 ( 72 H 104 h
    9 HT 41 ) 73 I 105 i
    10 LF 42 * 74 J 106 j
    11 VT 43 + 75 K 107 k
    12 FF 44 , 76 L 108 l
    13 CR 45 - 77 M 109 m
    14 SO 46 . 78 N 110 n
    15 SI 47 / 79 O 111 o
    16 DLE 48 0 80 P 112 p
    17 DCI 49 1 81 Q 113 q
    18 DC2 50 2 82 R 114 r
    19 DC3 51 3 83 S 115 s
    20 DC4 52 4 84 T 116 t
    21 NAK 53 5 85 U 117 u
    22 SYN 54 6 86 V 118 v
    23 TB 55 7 87 W 119 w
    24 CAN 56 8 88 X 120 x
    25 EM 57 9 89 Y 121 y
    26 SUB 58 : 90 Z 122 z
    27 ESC 59 ; 91 [ 123 {
    28 FS 60 < 92 / 124
    29 GS 61 = 93 ] 125 }
    30 RS 62 > 94 ^ 126 `
    31 US 63 ? 95 _ 127 DEL

    博客内容仅供自已学习以及学习过程的记录,如有侵权,请联系我删除,谢谢!

    相关文章

      网友评论

          本文标题:String的compareTo方法

          本文链接:https://www.haomeiwen.com/subject/dhtrbqtx.html