Java基础--枚举

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]强烈建议当你需要定义一组常量时,使用枚举类型

原文地址:https://www.cnblogs.com/WhiperHong/p/10793053.html