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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 李小锋 于 2012-12-14 09:03 编辑

return new Integer(s1.getAge()).compareTo(new Integer(s2.getAge()));
这个语句具体怎么实现的,请知道的解释一下

7 个回复

正序浏览
是这样的:public int compareTo(Integer anotherInteger)在数字上比较两个 Integer 对象。
如果该 Integer 等于 Integer 参数,则返回 0 值;如果该 Integer 在数字上小于 Integer 参数,则返回小于 0 的值;如果 Integer 在数字上大于 Integer 参数,则返回大于 0 的值(有符号的比较)。
楼主应该明了了吧。
回复 使用道具 举报
return new Integer(s1.getAge()).compareTo(new Integer(s2.getAge()));

首先看compareTo两边比较的是什么,是两个Integer对象,也就是int基本数据类型的包装类。为什么不直接把通过两个对象的getAge方法返回的两个int 值拿来比较呢?
其实直接比较两个对象的age属性值是可以的,但是相对上面这句代码比较复杂。
因为Integer类已经实现了Comparable接口(这个接口是让要进行比较的对象具备可比较性,主要通过实现CompareTo方法来自定义对象要比较的内容,从而让对象能够根据给定的内容来进行比较。),可以直接使用这个对象的compareTo方法,来对封装的基本数据进行比较。
当然最简单的代码还是return s1.getAge() - s2.getAge();
回复 使用道具 举报
整句代码的意思是这样的,使用Integer的构造方法创建一个Integer对象new Integer(s1.getAge(),
该对象调用Integer类中的compareTo方法,compareTo()方法传入一个Integer类型的
对象new Integer(s2.getAge();该对象也是通过Integer的构造方法建立的。
实现在数字上比较两个 Integer 对象,然后将比较的结果返回。
return new Integer(s1.getAge()).compareTo(new Integer(s2.getAge()));
如果该 Integer 等于 Integer 参数,则返回 0 值;如果该 Integer 在数字上小于 Integer 参数,则返回小于 0 的值;
如果 Integer 在数字上大于 Integer 参数,则返回大于 0 的值。
回复 使用道具 举报
这是个偷懒写法,
实际是这样的
Integer s1 = new Integer();
Integer s2 = new Integer();
s1.geAge().compareTo(s2.getAge)
回复 使用道具 举报
首先。s1.getAge()获取获取到的是一个整型值,Integer(int value)    构造一个新分配的 Integer 对象,它表示指定的 int 值,在 compareTo(T o)比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。希望楼主能看懂!
回复 使用道具 举报
呵呵  这句话实质上就是return s1.getAge()-s2.getAge();

呵呵,这个就是实现Comparable接口的compareTo()方法,可以比较两个值,然后确定排序的顺序...
回复 使用道具 举报
这个就使用的是Integer的compareTo方法,两个数的比较 ,从你上面的语句中如果s1的年龄等于s2的年龄 则return 0,s1的年龄大于s2的年龄则返回大于0的值,反之则返回小于0的数
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马