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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 疯子的昨天 中级黑马   /  2014-2-6 00:10  /  1111 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class meiju {

        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
             WeekDays x =  WeekDays.SUN;
             System.out.println(x.name());
             System.out.println(WeekDays.valueOf("SUN"));
             System.out.println(WeekDays.valueOf("SUN").toString());
        }
         public enum WeekDays{
                SUN,MON,TUE,WED,THR,FRI,SAT;
                 
                 
         }
}

想问下System.out.println(WeekDays.valueOf("SUN"));
             System.out.println(WeekDays.valueOf("SUN").toString());
这两句的区别。 我输出的结果都是SUN 问下什么区别。
还有为什么传入的值要写"SUN"字符串。 直接写 SUN 就会报错?

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 赞一个!

查看全部评分

1 个回复

倒序浏览
第一个问题
没有区别,前一个自动调用了toString方法

但是枚举类型的name 和toString是有区别的
name() 被final修饰,是不能被覆盖的
toString()方法可以覆盖。
比如:
  1.   public String toString() {
  2.                    String name="这一天是"+this.name();
  3.                    return name;//在调用就能看到区别了
  4.            }
复制代码


第二个问题
把鼠标方法在valueOf方法就可以看到,它需要我们传入一个String对象作为参数
直接写SUN编译器不知道你在说什么

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 神马都是浮云

查看全部评分

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