Java学习之枚举

枚举—enum

一个类中的对象,一般认为个数是有限且固定的,可以将每一个对象一一列举出来
1.如果没有枚举类,如何手动设计一个Day类描述一周7天

//类似单例模式
public class Day {//描述星期
	
	//构造方法私有
	private Day() {}
	//所有对象都是属性
	public static final Day monday = new Day();
	public static final Day tuesday = new Day();
	public static final Day wednesday = new Day();
	public static final Day thursday = new Day();
	public static final Day friday = new Day();
	public static final Day saturday = new Day();
	public static final Day sunday = new Day();
}
public class Test {
	public static void main(String[] args) {
		Day day = Day.monday;
	}
}

采用枚举类

public enum MyDay {
	//7个当前类对象
	 monday, tuesday, wednesday ,thursday , friday ,saturday, sunday
}
public class Test {
	public static void main(String[] args) {
		MyDay myDay = MyDay.monday;
	}
}

我们自己定义的枚举类默认继承Object,除了继承Object类的方法以外,默认继承Enum类型,所以没有办法再继承(extends)别的类,但是可以实现
Enum类有两个属性
  — name 枚举对象的名字,name()获取name属性
  — ordinal 枚举对象在类中罗列的顺序,类似index 也从零开始,ordinal()获取序列
一些常用的方法:
  valueOf() 通过给定的name,获取对应的枚举对象
  values() 获取全部的枚举对象,返回一个数组,枚举类型的数组
  compareTo() 可以比较两个枚举对象,比较对象的位置前后
  toString() 没有用final修饰,可以重写

switch内部判断enum对象

public enum MyDay {
	 monday, tuesday, wednesday ,thursday , friday ,saturday, sunday
}
public class Test {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入一个星期");
		String key = input.nextLine();
		MyDay day = MyDay.valueOf(key);
		switch (day) {
			case monday:
				System.out.println("您输入的是星期一");
				break;
		}		
	}
}

我们也可以在enum中描述自己的属性或方法
  必须在类中第一行 描述枚举的样子,最后需要分号结束;
  可以定义自己的属性
  类创建的过程中 帮我们创建枚举类型的对象
  需要给枚举类型提供对应样子的构造方法,并且构造方法只能用private修饰(原因参照无枚举时的例子),

public enum MyDay {
	monday("星期一",1), tuesday, wednesday ,thursday , friday ,saturday, sunday;
	
	private String name;
	private int index;
	private MyDay() {}
	private MyDay(String name, int index) {
		this.name=name;
		this.index=index;
	}
	public String getName() {
		return this.name;
	}
	public int getIndex() {
		return this.index;
	}
}

public class Test {
	public static void main(String[] args) {
		MyDay day = MyDay.monday;
		System.out.println(day.getName()+day.getIndex());
			
	}
}
//星期一1

总的来说,枚举就是一个对象,但是这个对象有个数限制,所以以后遇到对象个数有限的情况下可以考虑枚举。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值