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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小飞龙 初级黑马   /  2012-7-19 16:17  /  1412 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public int compareTo(Object o){
                PersonTwo p=(PersonTwo)o;
                int lastCmp=lastName.compareTo(p.lastName);  //这里为什么要定义一个lastCmp呢
                return (
                        lastCmp!=0?lastCmp:firstName.compareTo(p.firstName));//这句完全不理


哪位大哥能不能帮我翻译一下这段代码   看不太懂。

2 个回复

倒序浏览
  1. int lastCmp=lastName.compareTo(p.lastName);  //这里为什么要定义一个lastCmp呢
复制代码
因为比较肯定是两个对象或两个对象的属性才能比较嘛
后面那个就是被比较的对象属性
  1. lastCmp!=0?lastCmp:firstName.compareTo(p.firstName));//这句完全不理
复制代码
这是一个三元表达式,就相当于:
  1. if(lastCmp != 0)
  2.         return lastCmp;
  3. else
  4.         return firstName.compareTo(p.firstName));
复制代码
回复 使用道具 举报
public int compareTo(Object o){
                PersonTwo p=(PersonTwo)o;
                int lastCmp=lastName.compareTo(p.lastName);  //首先compareTo()返回的是个整型数,暂存到lastCmp中

                return (
                        lastCmp!=0?lastCmp:firstName.compareTo(p.firstName));//这句话:如果lastCmp不等于零,返回lastCmp ,等于零,返回firstName的比较结果
总之你这段代码的意思就是
先根据名字比较,进行排序
如果名字相同,就和姓名比较,根据姓名排序

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马