`

JAVA 关于String的CompareTo方法即字典序比较

阅读更多
按字典顺序比较两个字符串。该比较基于字符串中各个字符的 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()
public class TestStringCompare {
public static void main(String args[])
{
   String s1="abc";
   String s2="abcd";
   System.out.println("s1.compareTo(s2)"+s1.compareTo(s2));//前缀相同则比较长度,长度差-1
   System.out.println("s1.compareTo(s2)"+s1.compareTo("abcdefgh"));//长度差-5
   String s3="abc";
   String s4="ae";
   System.out.println("s3.compareTo(s4)"+s3.compareTo(s4));//只比较第一个不同的字符处b-e=-3
   String s5="abcdeg";
   String s6="acce";
   System.out.println("s5.compareTo(s6)"+s5.compareTo(s6));//b-c=-1
   String s7="abc";
   String s8="abb";
   System.out.println("s7.compareTo(s8)"+s7.compareTo(s8));//c-b=1
   String s9="abc";
   String s0="abaaaaaaaaaaaaa";
   System.out.println("s9.compareTo(s0)"+s9.compareTo(s0));//c-a=2只比较第一个不同的字符处,与长度无关

String sa="我";
   System.out.println("s9.compareTo(s0)"+s9.compareTo("喔"));//-2181因为是Unicode编码可以比较汉字
}

}


 

分享到:
评论

相关推荐

    关于重写equals,hashcode以及compareTo方法!

    关于重写equals,hashcode以及compareTo方法!

    String类下compareTo()与compare()方法比较

    主要介绍了String类下compareTo()与compare()方法比较的相关资料,需要的朋友可以参考下

    Java的String的常用方法

    int compareTo(String anotherString) 按字典顺序比较两个字符串。 int compareToIgnoreCase(String str) 按字典顺序比较两个字符串,不考虑大小写。 String concat(String str) 将指定字符串连接到此字符串的结尾。...

    java CompareTo使用案例

    Show How to use CompareTo

    Java SE程序 TreeSet类中自定义CompareTo类

    Java SE程序 TreeSet类中自定义CompareTo类Java SE程序 TreeSet类中自定义CompareTo类Java SE程序 TreeSet类中自定义CompareTo类Java SE程序 TreeSet类中自定义CompareTo类Java SE程序 TreeSet类中自定义CompareTo类...

    java源码解析之String类的compareTo(String otherString)方法

    主要给大家介绍了关于java源码解析之String类的compareTo(String otherString)方法的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧

    用JAVA实现时间比较

    public static int compareTo(String date1,String date2){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); int date = 0; try { Date d1 = sdf.parse(date1); Date d2 = sdf.parse(date...

    aequum:Aequum 库旨在通过使用 Java 8 lambdas 在 POJO 类上编写 equals、hashCode 和 compareTo 方法时帮助删除一些样板

    ###Responsibilities### Aequum 库旨在通过使用在 POJO 类上编写equals 、 hashCode和compareTo方法时帮助删除一些样板。 请注意,此库依赖于 Java 8。 ###组件初始化指令###要使用此库,调用builder的方法Aequum...

    compareTo用法

    compareTo用法compareTo用法compareTo用法compareTo用法compareTo用法compareTo用法compareTo用法

    详解java中保持compareTo和equals同步

    主要介绍了详解java中保持compareTo和equals同步的相关资料,需要的朋友可以参考下

    阿里Java开发完整版手册

    阿里内部Java工程师所遵循的开发规范,涵盖编程规约、单元测试规约、异常日志规约、MySQL规约、工程规约、安全规约等,这是近万名阿里Java技术精英的经验总结. 还包含java基础泛型、反射、注解,java高级特性、设计...

    4种方法在java中,对日期时间的比较.docx

    java.util.Date提供了在Java中比较两个日期的经典方法compareTo()。 1.如果两个日期相等,则返回值为0。 2.如果Date在date参数之后,则返回值大于0。 3.如果Date在date参数之前,则返回值小于0。

    Java语言程序设计(第3版)第06章-字符串.pptx

    6.1.1 字符串比较 Java语言程序设计(第3版) 比较大小: int compareTo(String str) 小于,返回值小于0 等于,返回值等于0 大于,返回值大于0 判断前缀、后缀和包含 boolean startsWith(String prefix) boolean ...

    Java 2实用教程(第三版)实验指导与习题解答

    实验1 String类的常用方法 19 实验2 比较日期的大小 21 实验3 处理大整数 22 上机实践6 组件及事件处理 23 实验1 算术测试 23 实验2 信号灯 25 实验3 布局与日历 28 上机实践7 组件及事件处理2 31 实验1 方程求根 31...

    java排序代码

    自然排序:TreeSet会调用集合元素的compareTo(Object obj)方法来比较元素之间大小关系,然后将集合元素按升序排列。 定制排序:在创建TreeSet集合对象时,并提供一个Comparator接口实现类对象与该TreeSet集合...

    java字符串操作大全

     equals()方法比较字符串对象中的字符,==运算符比较两个对象是否引用同一实例。  例:String s1="Hello";  String s2=new String(s1);  s1.eauals(s2); //true  s1==s2;//false 10、compareTo()和...

    java汉字排序

    Java代码 1.import java.util.Comparator; 2.import net.sourceforge.pinyin4j.PinyinHelper; 3./** 4. * 汉字按照拼音排序的比较器 5. * @author KennyLee 2009-2-23 10:08:59 6. * 7. */ 8.public class ...

    java中字符串运算

    g.drawString("字符串s1的长度为:"+n1,5,70); g.drawString("字符串s2的前缀是否为we? "+s2.startsWith("we"),5,90); ... g.drawString("s3按字典序重新排序为: ",5,130); for(int i=0;i;i++)

    阿里Java开发手册嵩山版 v1.7.0.zip

    阿里Java开发手册嵩山版 ...4)修正 BigDecimal 类中关于 compareTo 和 equals 的等值比较。 5)修正 HashMap 关于 1024 个元素扩容的次数。 6)修正架构分层规范与相关说明。 7)修正泰山版中部分格式错误和描述错误。

    字符串的比较

    按字典顺序比较两个字符串。该比较基于字符串中各个字符的 Unicode 值。将此 String 对象表示的字符序列与参数字符串所表示的字符序列进行比较。...compareTo 只有在方法 equals(Object) 返回 true 时才返回 0。

Global site tag (gtag.js) - Google Analytics