黑马程序员技术交流社区

标题: 帮忙看下下面这段代码 [打印本页]

作者: 疯子的昨天    时间: 2014-2-6 00:10
标题: 帮忙看下下面这段代码
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 就会报错?
作者: Unicorn319    时间: 2014-2-6 01:50
第一个问题
没有区别,前一个自动调用了toString方法

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


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




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2