黑马程序员技术交流社区

标题: 枚举!真心求指导! [打印本页]

作者: 杨志    时间: 2012-4-28 18:46
标题: 枚举!真心求指导!
JAVA既然枚举是规定了定义变量值是固定的值!那么为什么不去用数组实现呢? 数组也是可以去固定变量的值。然后直接去调。这个真心不明白!
作者: 张卯    时间: 2012-4-28 19:09
枚举既然存在,肯定是有其存在的意义的,JDK1.5更新之一嘛,枚举还是比较方便的,因为枚举中定义的变量名可以更直观更有意义,提高了阅读性,而且用来固定变量的值比数组更方便,枚举是一个类,你定义好了这个类就可以反复使用了,也就是提高了复用性,你用数组的话要先new一个数组对象,再一个一个赋值,还是麻烦一点的,再说数组不能单独存在,必须依靠类,作为类的成员变量存在,调用并不如枚举简单方便。个人观点,仅供参考!呵呵~
作者: 张小庆    时间: 2012-4-28 19:11
枚举里边你还可以自定义方法啊
作者: 张文建    时间: 2012-4-28 19:24
枚举对象在任一时刻只能有一个常量值,数组对象在任一时刻可以有多个值。
数组存放的都是同一种类型的数据,但枚举可存放不同数据类型的数据。其次是枚举是值类型,数组是引用类型。
作者: 曾_强    时间: 2012-4-28 19:44
本帖最后由 jiyixuan 于 2012-4-28 20:02 编辑

举个常用的例子,你要表示星期1-7,你可以用int1-7,但是当你把它作为参数的时候,有时后你就给考虑传入0,8的情况.而且用数字表示还需要相应的注释和文档.
这个时候你定义个一个枚举,名字就叫字面就叫Monday , Tuesday ,....就行,直观,并且值可控。


找到早期的枚举举例程序,您可以看看。
  1. public final class Month{
  2. private String name;
  3. private Month (String nm){name=nm;}
  4. public String toString(){return name;}
  5. public static final Month
  6. JAN=new Month("January"),
  7. FEB=new Month("February"),
  8. MAR=new Month("March"),
  9. APR=new Month("April"),
  10. MAY=new Month("May"),
  11. JUN=new Month("June"),
  12. JUL=new Month("July"),
  13. AUG=new Month("August"),
  14. SEP=new Month("September"),
  15. OCT=new Month("October"),
  16. NOV=new Month("November"),
  17. DEC=new Month("December");
  18. public static final Month month[]={
  19. JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC
  20. };
  21. public static final Month number(int ord){
  22. return month[ord-1];
  23. }
  24. //main
  25. public static void main(String args[]){
  26. Month m=Month.JAN;
  27. System.out.println(m);

  28. m=Month.number(12);
  29. System.out.println(m);

  30. System.out.println(m==Month.DEC);
  31. System.out.println(m.equals(Month.DEC));

  32. System.out.println(Month.month[3]);
  33. System.out.println(Month.APR);
  34. }
  35. }
复制代码

作者: 曾_强    时间: 2012-4-28 19:48
枚举类型就是将一个类型限制在可控制的范围内。枚举可以限定参数的个数,对调用者的行为能更加严格地进行控制。把一些运行期的参数检查放到了编译期,做到这点是一个很大的进步。




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