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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王峰230321 中级黑马   /  2013-7-25 15:46  /  1187 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨兴庭 于 2013-7-25 23:16 编辑

图片中第29行
int num = new Integer(thin.age)compareTo(new Integer(s.age)).  
这句.   为什么要 new Integer  ?   有点看不明白呢.      
本身 在上文  age 不就是int 类型的吗.  直接拿来做自然顺序 不就行了吗. ?
是不是因为基础没记牢 . 又忘了什么地方. ?

3.jpg (37.42 KB, 下载次数: 0)

3.jpg

评分

参与人数 1技术分 +1 收起 理由
杜光 + 1 每天提问并回答问题,是对知识的复习和积累.

查看全部评分

3 个回复

倒序浏览
本帖最后由 liuzhming 于 2013-7-25 16:46 编辑

因为它要装箱成Integer对象,使用Integer中的compareTo方法进行比较,该方法比较方式是,如果调用者的int值大于被调用者的int值,返回正数,相等返回0,否则返回负数。下面名字的比较使用了String的compareTo方法。
回复 使用道具 举报
本帖最后由 蚂蚁搬家 于 2013-7-25 16:51 编辑

自然顺序是按照compareTo方法的返回值来进行比较的,compareTo方法的返回值是int型的,
如果你直接用int age比较,你就不得不用如下写法:
if(this.age > s.age)  return   3;
if(this.age  = s.age)   return  0;
return  -3;
Integer类内部已经重写过compareTo方法了,你直接将int类型的age转换为Integer对象,然后调用Integer的compareTo方法进行比较不是更简单,程序更简洁嘛

评分

参与人数 1技术分 +1 收起 理由
杜光 + 1 每天提问并回答问题,是对知识的复习和积累.

查看全部评分

回复 使用道具 举报
因为int类型是基本类型,没有compareTo方法,只有转换成 Integer 类型才能调用compareTo方法啊
compareTo方法中的参数也是Integer类型的

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

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