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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘晓康 中级黑马   /  2012-4-7 13:44  /  1469 人查看  /  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 个回复

倒序浏览
本帖最后由 孙利川 于 2012-4-7 14:28 编辑

public int compareTo(Object o){
                PersonTwo p=(PersonTwo)o;
                int lastCmp=lastName.compareTo(p.lastName);  //这里为什么要定义一个lastCmp呢
                //它的作用是先把lastName字段的比较结果保存起来,如果为零再比较另一字 段。

                return (
                        lastCmp!=0?lastCmp:firstName.compareTo(p.firstName));//这句完全不理解
                //这句代码的意思是,如果lastCmp不为零则返回lastCmp,如果为零则返回firstName.compareTo(p.fisrtName),即如果lastName字段的值不同就返回lastName字段的比较结果,如果相同就断续比较firstName字段,并返回该字段的比较结果。
                            //这个老毕的视频里有,比较两个对象时,如果第一个字段的值相等,再断续比较第二个字段,甚至如果第二个字段的值相等再比较第三个字段。lastCmp!=0?lastCmp:firstName.compareTo(p.firstName));这句使用的是三元运算符:A?B:C ,如果A的值是true则返回B,如果A的值为false则返回C,在本句代码中,A是lastCmp!=0,B是lastCmp,C是firstName.compareTo(p.firstName)。可以这样写:(lastCmp!=0)?lastCmp:firstName.compareTo(p.firstName));
回复 使用道具 举报
让人根据它写成小说又被不同导演拍成48个不同版本的电影的好帖  
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马