int num = new Integer(this.age).compareTo(new Integer(arg0.age));
//int num = this.age-arg0.age;为啥不直接这样写??????
if(num == 0){
return this.name.compareTo(arg0.name);
}
return num;
}
}
</p>
复制代码
这是Map集合的练习,为了让学生类具备可比较性,实现了 Comparable接口,我想问的是,重写compareTo()时
int num = new Integer(this.age).compareTo(new Integer(arg0.age));
为啥不直接这样写??????
int num = this.age-arg0.age; 作者: 袁梦希 时间: 2013-4-28 16:51 本帖最后由 袁梦希 于 2013-4-28 17:11 编辑
楼主你好
new Integer(this.age),这样写的目的是把数值类型的封装为了对象类型,便于操作。
因为Comparable接口中的compareTo()方法是对两个对象进行比较的。
希望可以解决楼主的问题
作者: 肖宇宥 时间: 2013-4-28 17:03
int num = this.age-arg0.age;这样写也可以吧,本来compareTo()就是根据相减,返回正数/负数/0,来判断谁大谁小。
但是如果是字符串比较就不适用了,所以,还是写compareTo(),这样比较通用作者: 高正新 时间: 2013-4-28 17:21
int num = new Integer(this.age).compareTo(new Integer(arg0.age));
这样写,运用父类方法比较两个对象,很严谨。
为啥不直接这样写??????
int num = this.age-arg0.age;
这样写,是在做一个运算,但是二者本来是对象的,用到了自动拆箱。
(个人感觉不是很严谨,如果一个age为null,这个程序是不是就报错了?)作者: 庞瑞堂 时间: 2013-4-28 17:56
你这样写应该也可以,但是有一定的局限性,当两个变量都为int类型时,这样写没有问题,但是如果要是出现字符串对象的情况下,就不能这样写,为了保证代码的健壮性,还是用compareTo()好些。