1.枚举简介
枚举是由一组固定的常量组成的类型,自定义数据类型。
枚举的常量值一定是可列举的有限值。常量值的类型都是public static final。
下面代码中的Gender 是一种自定义的数据类型,可以用于声明变量,且变量的取值必须是枚举值的其中一个。gender的值必须是男或者女或者保密。
1 public enum Gender { 2 男, 3 女, 4 保密; 5 }
1 public static void main(String[] args) { 2 3 // 声明一个Gender枚举类型的变量gender,并取值为男 4 Gender gender = Gender.男; 5 }
java中所有的枚举类型都继承于Enum类。可以把枚举类型看出一个类。
1 public class Student { 2 3 private String name; 4 private int age; 5 private Gender gender; 6 7 public String getName() { 8 return name; 9 } 10 11 public void setName(String name) { 12 this.name = name; 13 } 14 15 public int getAge() { 16 return age; 17 } 18 19 public void setAge(int age) { 20 this.age = age; 21 } 22 23 public Gender getGender() { 24 return gender; 25 } 26 27 public void setGender(Gender gender) { 28 this.gender = gender; 29 } 30 31 public Student(String name, int age, Gender gender) { 32 super(); 33 this.name = name; 34 this.age = age; 35 this.gender = gender; 36 } 37 38 public Student() { 39 super(); 40 } 41 42 @Override 43 public String toString() { 44 return "Student [name=" + name + ", age=" + age + ", gender=" + gender + "]"; 45 } 46 47 } 48 49 // class Gender extends Enum{} 50 enum Gender { 51 男, 女, 保密; 52 }
2.枚举和字符串转化
1 public static void main(String[] args) { 2 3 // 声明一个Gender枚举类型的变量gender,并取值为男 4 Gender gender = Gender.男; 5 6 7 // 枚举值->字符串 8 System.out.println(gender.toString()); 9 10 // 字符串串-> 枚举值 11 String str = "保密"; 12 // 可能产生IllegalArgumentException 非法参数异常 13 Gender gender2 = Enum.valueOf(Gender.class, str); 14 System.out.println(gender2); 15 16 }
3.枚举和switch
1 public enum Week { 2 MONDAY, 3 TUESDAY, 4 WEDNESDAY, 5 THURSDAY, 6 FRIDAY, 7 SATURDAY, 8 SUNDAY; 9 }
1 public static void main(String[] args) { 2 3 4 // 需求:有一个变量表示星期几,输出对于的教学安排 5 Week week = Week.TUESDAY; 6 switch (week) { 7 case MONDAY: 8 case TUESDAY: 9 case THURSDAY: 10 case FRIDAY: 11 case SATURDAY:{ 12 System.out.println("上课"); 13 break; 14 } 15 case WEDNESDAY: 16 case SUNDAY:{ 17 System.out.println("练习"); 18 break; 19 } 20 } 21 }
4.枚举的其他方法
1 public static void main(String[] args) { 2 3 // 枚举变量的其他方法 4 Week week = Week.SUNDAY; 5 System.out.println(week.name()); 6 System.out.println(week.ordinal()); 7 }
5.枚举总结
[1]只能够取特定值中的一个
[2]使用enum关键字
[3] 所有的枚举类型隐性地继承自 java.lang.Enum。(枚举实质上还是类!而每个被枚举的成员实质就是一个枚举类型的实例,他们默认都是public static final的。可以直接通过枚举类型名直接使用它们。)
[4]强烈建议当你需要定义一组常量时,使用枚举类型