黑马程序员技术交流社区
标题:
枚举中的compareTo方法
[打印本页]
作者:
张胜格
时间:
2012-10-27 22:25
标题:
枚举中的compareTo方法
本帖最后由 张胜格 于 2012-10-30 10:44 编辑
请问枚举中
compareTo方法
与
equals方法
有什么不同啊?compareTo的返回值是int类型的,是什么意思啊?
作者:
张忠豹
时间:
2012-10-27 23:02
API中的解释:
compareTo(E o)
比较此枚举与指定对象的顺序。
boolean equals(Object other)
当指定对象等于此枚举常量时,返回 true。
compareTo就是按照你在enum中定义元素的顺序来比较的
equals就是比较这两个枚举元素是不是同样一个对象。
enum WeekDay3 {// 枚举就(WeekDay2)是一个类
// 枚举类中的元素就相当于对象,如果后面没有东西,“;”可以省略
SUN(1), MON, TUE, WED, THI, FRI, SAI(1);
// 1、枚举类中定义的方法必须放在所有元素之后
// 2、枚举类的构造方法必须用private修饰
private WeekDay3() {
System.out.println("first");
}// 调用枚举类默认用的是空参数的构造方法,而要使用非空参数构造方法,就必须在元素后面加上()
private WeekDay3(int i) {
System.out.println("second");
}
}
在测试的时候
System.out.println(weekday3.compareTo(WeekDay3.TUE));//答案为4
System.out.println(weekday3.equals(WeekDay3.TUE));//答案为false
作者:
zdf091119
时间:
2012-10-27 23:06
例如 Week t=Week.SUN;
Week t1=Week.WED;
System.out.print(t==t1);
System.out.print(t.compareTo(t1));
enum覆写了Object中的equals方法,equals比较两个枚举元素内容是否相同,
compareTo也可以实现两个元素之间的比较,他比较的是元素的序列号,t-t1的值,相等则为0
作者:
林志进
时间:
2012-10-27 23:49
compareTo()方法: Enum实现了java.lang.Comparable接口,因此可以比较象与指定对象的顺序。Enum中的compareTo返回的是两个枚举值的顺序之差,该方法实现的自然顺序就是声明常量的顺序。当然,前提是两个枚举值必须属于同一个枚举类,否则会抛出ClassCastException()异常。
equals()方法比较两个枚举类对象的引用,当指定对象等于此枚举常量时,返回 true。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2