首先,枚举是jdk1.5添加的一个新的功能。在1.5之前,我们定义一个常量都是public static final.....对于虚拟机来说,final关键字是比普通的定义常量更加消耗内存。
在引入枚举之后,我们可以
public enum Size { SMALL,MEDIUM,LARGE,EXTRA_LARGE; }
实际上,这个声明定义的类型是一个类,它刚好有4个实例,在此尽量不要添加新的对象。
因此,比较两个枚举类型的值的时候,永远不需要调用equals,直接使用“==”就行了。所有得枚举类型都是Enum的子类,他们继承了这个类的很多方法,其中最常用的就是toString,
String small=Size.SMALL.toString();
输出字符串变量small 就会显示“SMALL”;
toString的逆方法是静态方法ValueOf,例如
Size z=Enum.valueOf(Size.class,"SMALL");//将z设置成Size.SMALL;
每个枚举类型都有一个静态的values方法,他将返回一个包含全部枚举值的数组
Size[] values=Size.values(); //正常枚举循环遍历可以使用 if(Size.hasMoreElements()){ Object s=Size.nextElement(); }
补充:枚举里存放的是常量,是不可以改变的。想要改变里面的值可以转换成其他类型来进行操作,比如上面的values()。