定义: 所谓枚举类型,就是用一组数量有限的标识符来表示一组连续的整型常数,使能够更清晰的表示出现实世界
枚举的用法:一些方法在运行的时候,需要的数据类型不是随意的,它是要在一个范围内有效的值,就可以用枚举来解决这个问题
语法格式定义 
	enum 枚举类的类名{
	//先定义出 对应的 枚举值
	 //再来写方法
	}
枚举的注意点:
	 1.枚举类型 是一个 特殊的 类  final class 枚举类名 extends java.lang.Enum 
	 2.枚举类中 的 枚举值(man, woman) 默认修饰符 是 public static  final 
	 3.枚举类中的 枚举值 它的类型 是 本类类型 Sex类型的 对象
	 4.枚举类的构造方法 是 private修饰的, 枚举类 会自内部 自己构造枚举值
	 5.枚举类 是可以有成员变量的,但是只能通过枚举值 去访问枚举类型 的 实例成员变量
	 6.枚举类 构造的 枚举值对象,默认是无参构造的,但是你可以通过有参数的构造来构造他们, 这个有参构造 必须是 private修饰的
	 7.枚举类 也可以有抽象的方法, 但是注意的是 枚举值必须要实现抽象的方法
	 8.枚举值 必须是 枚举类中的 第一个语句
示例代码:public class Demo{
public static void main(String[] args) {
Student jack = new Student();	
		jack.setAge(33);
		jack.setName("杰克");
		jack.setSex(Sex.man);
		Sex.man.value = "呵呵";
		Sex.value1 = "haha";
		
		System.out.println("jack 的 姓名 : " + jack.getName() + ", 性别是 : " + jack.getSex());
		System.out.println("value : "+ Sex.man.value);  // "hehe"
		System.out.println("value : "+ Sex.woman.value); // null
		System.out.println("value : "+ Sex.value1);
		//Sex s = new Sex();
Sex.man.test();
		Sex.woman.test();
		
		Sex.man.test1();
		Sex.woman.test1();
	}
}
enum Sex{	
	//定义枚举值
    man("男"){   	
    	public void test1(){  		
    		System.out.println("man 在 实现抽象方法");
    	}   	
    }, woman("女"){
        public void test1(){	
    		System.out.println("woman 在 实现抽象方法");
    	}	
    }, renyao("人妖"){
    	 public void test1(){
     		System.out.println("人妖   在 实现抽象方法");
     	}
    	
    };//特别注意大括号后面的逗号和分号
    
    //成员变量 
    String value;
    
    static String value1;
    
    //行为 方法
    //1.构造方法
    private Sex(String value){
    	
    	this.value = value;
    }   
    public void test(){
    	
    	System.out.println("这是枚举类型的 公开的普通方法 : " + this.value);
    }
    
    //声明了一个抽象方法 
    public abstract void test1();	
}
class Student{
	private String name;
	private int age;
	private Sex sex;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public Sex getSex() {
		return sex;
	}
	public void setSex(Sex sex) {
		this.sex = sex;
	}	
}


遍历、switch 等常用操作

对enum进行遍历和switch的操作示例代码:



public  class  Test {



public  static  void  main(String[] args) {



for  (EnumTest e : EnumTest.values()) {



System.out.println(e.toString());



}



 



System.out.println( "----------------我是分隔线------------------" );



 



EnumTest test = EnumTest.TUE;



switch  (test) {



case  MON:



System.out.println( "今天是星期一" );



break ;



case  TUE:



System.out.println( "今天是星期二" );



break ;



// ... ...



default :



System.out.println(test);



break ;



}



}



}


输出结果:



MON



TUE



WED



THU



FRI



SAT



SUN


enum 对象的常用方法介绍

int compareTo(E o) 
          比较此枚举与指定对象的顺序。

Class<E> getDeclaringClass() 
          返回与此枚举常量的枚举类型相对应的 Class 对象。

String name() 
          返回此枚举常量的名称,在其枚举声明中对其进行声明。

int ordinal() 
          返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。

String toString()

          返回枚举常量的名称,它包含在声明中。

static <T extends Enum<T>> T valueOf(Class<T> enumType, String name) 
          返回带指定名称的指定枚举类型的枚举常量。

总结

    可以把 enum 看成是一个普通的 class,它们都可以定义一些属性和方法,不同之处是:enum 不能使用 extends 关键字继承其他类,因为 enum 已经继承了 java.lang.Enum(java是单一继承)。

以上是我对java中枚举的部分总觉以及资料查找,若有错误,欢迎指正!