黑马程序员技术交流社区

标题: 今天看张老师的枚举,有个小疑惑~~~ [打印本页]

作者: 张小庆    时间: 2012-4-20 19:10
标题: 今天看张老师的枚举,有个小疑惑~~~
package cn.itcast.day1;
public class EnumTest
{
/**
  * @param args
  */
     public static void main(String[] args)
    {
       // TODO Auto-generated method stub
  
        WeekDay weekDay2 = WeekDay.WED;
     }
     public enum WeekDay
    {
         SUN(333),MON,TUE(1),WED(2),THI,FRI,SAT;//这里括号里不管我写多少都会出现下面的结果,不是很明白,哪位大侠给解释解释
         private WeekDay(){System.out.println("first");}
          private WeekDay(int day){System.out.println("second");}
  
     }
}

运行后的结果:
second
first
second
second
first
first
first



作者: 张超超    时间: 2012-4-20 19:15
关键是这段代码  private WeekDay(int day){System.out.println("second");}的问题

day是一个参数,但是在类中却没有任何关于day的操作,只是输出“second”所以不管你在参数中传递什么实参,程序只是输出“second”。
那个输出first,这个你应该看的懂吧。

作者: 岳民喜    时间: 2012-4-20 19:26
SUN(333),TUE(1),WED(2), 你输得这些参数都代表只有一个参数,都在int范围内,所以调用的是WeekDay(int day)
你程序就一个无参和一个有参方法 ,所以肯定是这个结果

作者: liuyang    时间: 2012-4-20 19:26
很显然想实现上面那种打印结果,就要判断你传入的参数然后打印,但是现在你的打印语句里打印的值和你传入的参数没有一点关系,只是一个字符串,所以不管你
穿什么打印的都是那个字符串。
作者: 张小庆    时间: 2012-4-20 20:35
明白了,谢谢大家啊




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