1.定义
enum 是一种数据类型,与 全局常量比较相似,都是全局的并且是可以通过类名调用的
与全局常量区别
枚举功能更强大,可以有属性和方法 枚举比全局常量更加的规范
2.枚举特性
1)可以有属性以及set/get,方法,构造函数2)可以与switch连用3)可以重写toString方法,打印枚举对象时也会默认调用(官方不提供自动重写该方法)4)可以实现接口
3.获取枚举对象方法
【返回枚举属性值对应的对象】枚举.valueof(“属性值”)【返回所有枚举属性值对应的对象】枚举.values()【返回枚举对象】枚举.属性
4.枚举实例
代码:
枚举类
package com.qf.demo7;public enum Color { // red,green,yellow,实际上是Color枚举类型对象 RED("红色",1),GREEN("绿色",2),YELLOW("黄色",3); // 无论是否创建枚举对象 都一定需要加上 分号 否则编译报错 //枚举类可以添加属性和方法,如下 String name; int id; private Color(String name, int id) { this.name = name; this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } // 枚举中可以重写 toString 但是官方不会提供 // 打印对象时,会帮助自动调用 @Override public String toString() { // TODO Auto-generated method stub return "id="+id+",name="+name; }}
测试类:
package com.qf.demo7;public class Test { public static void main(String[] args) { //1.获取枚举对象:类.属性 Color color= Color.YELLOW;// System.out.println(color.getName()+" "+color.getId()); //2.获取枚举对象:类.valueOf() Color color2 = Color.valueOf("RED");// 根据枚举属性值 得到 枚举对象 //3.获取所有属性值:类.values() Color[] colors = Color.values();// 得到枚举中所有的属性对应的对象 for (Color color3 : colors) { System.out.println(color3); } //4.枚举可以作为switch语句的表达式 switch (color2) { case RED: System.out.println("红色"); break; case GREEN: System.out.println("绿色"); break; case YELLOW: System.out.println("黄色"); break; } }}