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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张胜格 中级黑马   /  2012-10-27 22:25  /  2168 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张胜格 于 2012-10-30 10:44 编辑

请问枚举中compareTo方法equals方法有什么不同啊?compareTo的返回值是int类型的,是什么意思啊?

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1

查看全部评分

3 个回复

倒序浏览
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
回复 使用道具 举报
             例如             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
回复 使用道具 举报
compareTo()方法: Enum实现了java.lang.Comparable接口,因此可以比较象与指定对象的顺序。Enum中的compareTo返回的是两个枚举值的顺序之差,该方法实现的自然顺序就是声明常量的顺序。当然,前提是两个枚举值必须属于同一个枚举类,否则会抛出ClassCastException()异常。
equals()方法比较两个枚举类对象的引用,当指定对象等于此枚举常量时,返回 true。

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