枚举

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类。可以把枚举类型看出一个类。

 
1
publicclass 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     枚举和字符串转化


public
staticvoid 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()); }

 

 

总结

  1. 只能够取特定值中的一个
  2. 使用enum关键字
  3. 所有的枚举类型隐性地继承自 java.lang.Enum。(枚举实质上还是类!而每个被枚举的成员实质就是一个枚举类型的实例,他们默认都是public static final的。可以直接通过枚举类型名直接使用它们。)
  4. 强烈建议当你需要定义一组常量时,使用枚举类型
posted @ 2019-05-05 22:06  小小穿梭机^^  阅读(122)  评论(0编辑  收藏  举报