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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李晓旭 中级黑马   /  2012-3-20 15:44  /  3325 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. class Demo implements Comparator<Student>
  2. {
  3.         public int compare(Student s1,Student s2)
  4.         {
  5.                 int num = s1.getName().compareTo(s2.getName());
  6.                 if (num==0)
  7.                         return new Integer(s1.getAge()).compareTo(new Integer(s2.getAge())); //*
  8.                 return num;
  9.         }
  10. }
复制代码
关于int型数值比大小
毕老师的视频里大多数都用得是上面带*注释的语句
为什么不写成
return s1.getAge() - s2.getAge();
老师那样写有什么好处?比如运行效率,或者抛出异常等等

6 个回复

倒序浏览
java的中心思想就是所有的一切都是对象。
java中除了8中基本数据类型外都是对象。之所以有这8中基本数据类型是为了照顾程序员的习惯。
因为所有的都是对象自然在java中也有于这8种基本数据类型对应的对象。这就没违背java的设计原则。
对象之间传递消息靠的就是对象的方法。public int compareTo(Integer anotherInteger)在数字上比较两个 Integer 对象。
new Integer(s1.getAge()).compareTo(new Integer(s2.getAge()));
这样写更符合java语言的中心思想。

以上纯属个人见解。看看就行了,别来喷我。
回复 使用道具 举报
Comparable接口
         1.要使一个实例化对象具有可比较性,那么这个实例化对象所对应的类,就必须实现Comparable接口!
         2.String,和int的包装类Interger都实现了Comparable这个接口!所以他们都具有可比较性。
回复 使用道具 举报
这个只能说是看起来比较专业而已,其实没什么区别
回复 使用道具 举报
return new Integer(s1.getAge()).compareTo(new Integer(s2.getAge())); //老师这么写是为了让一些学生们能够理解。

return s1.getAge() - s2.getAge(); //这么写也是可以的。

全凭自己理解。
回复 使用道具 举报
return new Integer(s1.getAge()).compareTo(new Integer(s2.getAge())); //返回的是1,-1,或0;
return s1.getAge() - s2.getAge();//返回的是整数负数或0;
在TreeSet集合中通过判断返回的数的大小排序,两种方法都可以实现需要;但是感觉通过对象调用方法的比较更专业
回复 使用道具 举报
ok,了解了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马