黑马程序员技术交流社区

标题: compareTo的用法 [打印本页]

作者: 李志广    时间: 2012-7-28 10:15
标题: compareTo的用法
本帖最后由 007lzg 于 2012-7-28 13:06 编辑

class StringDemo
{
        public static void main(String[] args)
        {
                getMethod();
        }
        public static void getMethod()
                {
                String s1=new String("acc");
                String s2=new String("add");
                String s3=new String("abc");
                sop(s1.compareTo(s3));//结果为:1
                sop(s1.compareTo(s2));//结果为:-1
                sop(s2.compareTo(s3));//结果为:2
                }
        public static void sop(Object obj)
                {
                System.out.println(obj);
                }
}

不明白为什么输出的结果为什么是1、-1 、2  compareTo原理是什么???求详解

作者: 纪艺松    时间: 2012-7-28 10:24
如果参数字符串等于此字符串,则返回值 0;如果此字符串按字典顺序小于字符串参数,则返回一个小于 0 的值;如果此字符串按字典顺序大于字符串参数,则返回一个大于 0 的值。

注意是小于零的数和大于零的数,不一定要是1或者-1

s1中第二个字符“c”大于s3中的二个字符“b”所以返回一个大于零的数1;以此类推后两结果
切记:是小于零的数和大于零的数,不一定要是1或者-1



作者: 乐峰    时间: 2012-7-28 10:30
实例String类型的对象,调用该类的compareTo()方法,该方法的原理是:按字典顺序比较两个字符串。该比较基于字符串中各个字符的 Unicode 值。按字典顺序将此 String 对象表示的字符序列与参数字符串所表示的字符序列进行比较。如果按字典顺序此 String 对象位于参数字符串之前,则比较结果为一个负整数。如果按字典顺序此 String 对象位于参数字符串之后,则比较结果为一个正整数。如果这两个字符串相等,则结果为 0。
sop(s1.compareTo(s3));//结果为:1//这个就是s3和s1进行比较,a和a顺序一样,b在c的顺序之前,所以该结果是正整数。下面的也是这个顺序比较法
  sop(s1.compareTo(s2));//结果为:-1
  sop(s2.compareTo(s3));//结果为:2

作者: 王龙彪    时间: 2012-7-28 10:37
String类的compareTo方法按字典顺序比较两个字符串。
如果参数字符串等于此字符串,则返回值 0;如果此字符串按字典顺序小于字符串参数,则返回一个小于 0 的值;如果此字符串按字典顺序大于字符串参数,则返回一个大于 0 的值。

所以
acc - abc = 1 返回 1
acc - add = -1
add - abc = 2
返回值是第一个不同字符的值的差
作者: 李菁    时间: 2012-7-28 10:40
compareTo方法是比较一个对象和指定对象的顺序。
如果该对象小于指定对象,返回负整数;该对象等于指定对象,返回0;该对象大于指定对象返回正整数
作者: 李志广    时间: 2012-7-28 10:57
还是不太明白,字典顺序是怎么回事?能不能把具体怎么比较给说一下?
作者: fiend    时间: 2012-7-28 11:40
我画了张图:

就是这个原理了。
作者: 李志广    时间: 2012-7-28 17:47
本帖最后由 007lzg 于 2012-7-28 17:49 编辑

为什么提问问题自己没有被加分呢??还是自己提问的太没有水平了?{:soso_e150:}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2