枚举

枚举

枚举指的是在一定范围内取值,这个值必须是枚举类型中的任意一个,而且只能取一个

枚举的特点:

1.必须在规定的范围内取值

2.这个值只能取一个

枚举的本质就是一个类

枚举既然本质是一个类,那么枚举里面有没有 成员变量,成员方法,构造方法,静态方法,抽象方法? 有的话又有意义吗?

1.枚举的构造方法必须私有

2.枚举当中默认有一个私有的无参构造方法,如果你写了一个带参的构造方法,那么会覆盖无参构造方法,所以编译报错

3.枚举里面的抽象方法是有意义的,其他成员没有意义

4.枚举的前面必须是枚举的常量成员

/*
 * 	使用枚举来描述一个星期有多少天
 * 	并且要求使用枚举的响应方法来告诉是星期几
 */
public class Practice01 {

	public static void main(String[] args) {
		
		Week week = Week.SATURDAY;
		switch (week) {
		case MONDAY:
			week.desc();
			break;
		case TUESDAY:
			week.desc();
			break;
		case WEDNESDAY:
			week.desc();
			break;
		case THURSDAY:
			week.desc();
			break;
		case FRIDAY:
			week.desc();
			break;
		case SATURDAY:
			week.desc();
			break;
		case SUNDAY:
			week.desc();
			break;
		default:
			break;
		}

	}
}

//Monday Tuesday Wednesday Thursday Friday Saturday Sunday
enum Week {
	MONDAY {
		@Override
		public void desc() {
			System.out.println("星期一");
		}
	},
	TUESDAY {
		@Override
		public void desc() {
			System.out.println("星期二");

		}
	},
	WEDNESDAY {
		@Override
		public void desc() {
			System.out.println("星期三");

		}
	},
	THURSDAY {
		@Override
		public void desc() {
			System.out.println("星期四");

		}
	},
	FRIDAY {
		@Override
		public void desc() {
			System.out.println("星期五");

		}
	},
	SATURDAY {
		@Override
		public void desc() {
			System.out.println("星期六");

		}
	},
	SUNDAY {
		@Override
		public void desc() {
			System.out.println("星期天");

		}
	};

	public abstract void desc();
}

枚举类型方法

  1. String name() 返回枚举的名称
  2. int ordinal() 返回枚举的索引
  3. static <T extends Enum> T valueOf(Class enumType, String name) 返回枚举对象
  4. valueOf(String name) 生成枚举对象
  5. values() 返回所有的枚举对象的数组
public class EnumDemo04 {
	public static void main(String[] args) {
		// 获取枚举对象
//		Weekend w = Weekend.valueOf(Weekend.class, "MONDAY");
//		System.out.println(w);
//		
//		// 获取枚举对象
//		Weekend w2 = Weekend.MONDAY;
//		System.out.println(w2);
//		
//		// 获取枚举对象
//		Weekend w3 = Weekend.valueOf("MONDAY");
//		System.out.println(w3);
//		medhod1();
//		method2();
		method3();
	}
	
	/**
	 * 1.已知枚举对象,获取枚举的名称和索引
	 */
	public static void medhod1() {
		Weekend w = Weekend.TUESDAY;
		String name = w.name();
		int index = w.ordinal();
		System.out.println(w);
		System.out.println(name);
		System.out.println(index);
	}
	
	/**
	 * 2.已经枚举的名称,获取到枚举的对象和下标
	 */
	public static void method2() {
		String name = "MONDAY";
		Weekend w = Weekend.valueOf(name);
		int index = w.ordinal();
		System.out.println(name);
		System.out.println(w);
		System.out.println(index);
	}
	
	/**
	 * 3.已知枚举的下标,获取到枚举的名称和枚举对象
	 */
	public static void method3() {
		int index = 2;
		Weekend[] ws = Weekend.values();
		Weekend w = ws[index];
		String name = w.name();
		System.out.println(index);
		System.out.println(w);
		System.out.println(name);
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值