枚举
1.1.1 枚举简介
枚举是由一组固定的常量组成的类型,自定义数据类型。语法:
[修饰符] enum enumName{ 常量值1, 常量值2, 常量值3…
常量值n[;] } |
枚举的常量值一定是可列举的有限值。常量值的类型都是public static final
案例:定义一个性别的枚举类型。
public enum Gender { 男, 女, 保密; } |
Gender 是一种自定义的数据类型,可以用于声明变量,且变量的取值必须是枚举值的其中一个。如:gender的值必须是男或者女或者保密。
public static void main(String[] args) {
// 声明一个Gender枚举类型的变量gender,并取值为男 Gender gender = Gender.男; } |
java中所有的枚举类型都继承于Enum类。可以把枚举类型看出一个类。
1publicclass Student {
2 3 4 5 private String name; 6 7 private int age; 8 9 private Gender gender; 10 11 12 13 public String getName() { 14 15 return name; 16 17 } 18 19 20 21 public void setName(String name) { 22 23 this.name = name; 24 25 } 26 27 28 29 public int getAge() { 30 31 return age; 32 33 } 34 35 36 37 public void setAge(int age) { 38 39 this.age = age; 40 41 } 42 43 44 45 public Gender getGender() { 46 47 return gender; 48 49 } 50 51 52 53 public void setGender(Gender gender) { 54 55 this.gender = gender; 56 57 } 58 59 60 61 public Student(String name, int age, Gender gender) { 62 63 super(); 64 65 this.name = name; 66 67 this.age = age; 68 69 this.gender = gender; 70 71 } 72 73 74 75 public Student() { 76 77 super(); 78 79 } 80 81 82 83 @Override 84 85 public String toString() { 86 87 return "Student [name=" + name + ", age=" + age + ", gender=" + gender + "]"; 88 89 } 90 91 92 93 } 94 95 96 97 // class Gender extends Enum{} 98 99 enum Gender { 100 101 男, 女, 保密; 102 103 }
1.1.2 枚举和字符串转化
publicstaticvoid main(String[] args) {
// 声明一个Gender枚举类型的变量gender,并取值为男 Gender gender = Gender.男; // 枚举值->字符串 System.out.println(gender.toString()); // 字符串串-> 枚举值 String str = "保密"; // 可能产生IllegalArgumentException 非法参数异常 Gender gender2 = Enum.valueOf(Gender.class, str); System.out.println(gender2); }
1.1.3 枚举和switch
public enum Week { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY; }
public static void main(String[] args) { // 需求:有一个变量表示星期几,输出对于的教学安排 Week week = Week.TUESDAY; switch (week) { case MONDAY: case TUESDAY: case THURSDAY: case FRIDAY: case SATURDAY:{ System.out.println("上课"); break; } case WEDNESDAY: case SUNDAY:{ System.out.println("练习"); break; } } }
枚举的其他方法
public static void main(String[] args) { // 枚举变量的其他方法 Week week = Week.SUNDAY; System.out.println(week.name()); System.out.println(week.ordinal()); }
总结
- 只能够取特定值中的一个
- 使用enum关键字
- 所有的枚举类型隐性地继承自 java.lang.Enum。(枚举实质上还是类!而每个被枚举的成员实质就是一个枚举类型的实例,他们默认都是public static final的。可以直接通过枚举类型名直接使用它们。)
- 强烈建议当你需要定义一组常量时,使用枚举类型