1. 枚举简介
枚举是由一组固定的常量组成的类型, 自定义数据类型.
枚举的常量值一定是可列举的有限值. 常量值的类型都是 public static final.
下面代码中的 Gender 是一种自定义的数据类型, 可以用于声明变量, 且变量的取值必须是枚举值的其中一个. gender 的值必须是男或者女或者保密.
public enum Gender {
男,
女,
保密;
- }
- public static void main(String[] args) {
- // 声明一个 Gender 枚举类型的变量 gender, 并取值为男
Gender gender = Gender. 男;
}
java 中所有的枚举类型都继承于 Enum 类. 可以把枚举类型看出一个类.
- public class Student {
- private String name;
- private int age;
- private Gender gender;
- 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 Gender getGender() {
- return gender;
- }
- public void setGender(Gender gender) {
- this.gender = gender;
- }
- public Student(String name, int age, Gender gender) {
- super();
- this.name = name;
- this.age = age;
- this.gender = gender;
- }
- public Student() {
- super();
- }
- @Override
- public String toString() {
- return "Student [name=" + name + ", age=" + age + ", gender=" + gender + "]";
- }
- }
- // class Gender extends Enum{}
- enum Gender {
男, 女, 保密;
}
2. 枚举和字符串转化
- public static void 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);
- }
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;
- }
- }
- }
4. 枚举的其他方法
- public static void main(String[] args) {
- // 枚举变量的其他方法
- Week week = Week.SUNDAY;
- System.out.println(week.name());
- System.out.println(week.ordinal());
- }
5. 枚举总结
[1] 只能够取特定值中的一个
[2] 使用 enum 关键字
[3] 所有的枚举类型隐性地继承自 java.lang.Enum.(枚举实质上还是类! 而每个被枚举的成员实质就是一个枚举类型的实例, 他们默认都是 public static final 的. 可以直接通过枚举类型名直接使用它们.)
[4] 强烈建议当你需要定义一组常量时, 使用枚举类型
来源: http://www.bubuko.com/infodetail-3041018.html