本帖最后由 ⋛⋌⋚JEEP 于 2014-8-16 14:48 编辑
比如我们自定义学生类比较时需要覆盖compareTo方法,涉及到if语句的应用,一般的做法比较繁琐,如下:
- public int compareTo(Object obj) {//因为是覆盖compareTo方法,不能声明异常。
- if(!(obj instanceof Student))
- throw new RuntimeException("不是学生对象");
- Student s = (Student)obj;//obj强转为Student类型,才可以进行比较。
- if(this.age>s.age){
- return 1;//按年龄比较,当前对象大于指定对象
- }if(this.age==s.age) {
- //主要条件相同时,需要比较次要条件,因为String类内部已经实现了compareTo的方法,直接调用即可。
- return this.name.compareTo(s.name);
- }return -1;//按年龄比较,当前对象小于指定对象
- }
复制代码
下面就是用三元运算符的多层应用化繁为简,格式:(条件1)?“值1”:(条件2)?“值2”:(条件3)?“值3”: ...
- public int compareTo(Object obj) {//因为是覆盖compareTo方法,不能声明异常。
- if(!(obj instanceof Student))
- throw new RuntimeException("不是学生对象");
- Student s = (Student)obj;//obj强转为Student类型,才可以进行比较。
- return this.age>s.age?1:this.age<s.age?-1:this.name.compareTo(s.name);//用三元运算符简化代码。
- }
复制代码 |