A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李志广 中级黑马   /  2012-7-28 10:15  /  2262 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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原理是什么???求详解

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

7 个回复

倒序浏览
如果参数字符串等于此字符串,则返回值 0;如果此字符串按字典顺序小于字符串参数,则返回一个小于 0 的值;如果此字符串按字典顺序大于字符串参数,则返回一个大于 0 的值。

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

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


评分

参与人数 1技术分 +1 收起 理由
田向向 + 1 赞一个!

查看全部评分

回复 使用道具 举报
实例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
回复 使用道具 举报
String类的compareTo方法按字典顺序比较两个字符串。
如果参数字符串等于此字符串,则返回值 0;如果此字符串按字典顺序小于字符串参数,则返回一个小于 0 的值;如果此字符串按字典顺序大于字符串参数,则返回一个大于 0 的值。

所以
acc - abc = 1 返回 1
acc - add = -1
add - abc = 2
返回值是第一个不同字符的值的差

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

回复 使用道具 举报
compareTo方法是比较一个对象和指定对象的顺序。
如果该对象小于指定对象,返回负整数;该对象等于指定对象,返回0;该对象大于指定对象返回正整数
回复 使用道具 举报
还是不太明白,字典顺序是怎么回事?能不能把具体怎么比较给说一下?
回复 使用道具 举报
fiend 中级黑马 2012-7-28 11:40:30
7#
我画了张图:

就是这个原理了。

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 007lzg 于 2012-7-28 17:49 编辑

为什么提问问题自己没有被加分呢??还是自己提问的太没有水平了?{:soso_e150:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马