黑马程序员====JAVA基础之枚举====

本文详细介绍了Java枚举的定义及用途,包括枚举值、成员变量、构造方法、普通方法和抽象方法等内容,并通过实例展示了如何使用枚举。


 ------- android培训java培训、期待与您交流! ----------

枚举:

枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译器会报错。

枚举可以让编译器在编译时就可以控制程序中填写的非法值,普通变量的方式在开发阶段无法实现这一目标。

枚举只有一个成员时,可以作为单例的实现方式。

枚举的常用方法:

int compareTo(E o):比较枚举与指定对象的顺序。
boolean equals(Object other):比较指定的对象是否等于此枚举常量
String name():返回此枚举常量的名称,在其枚举声明中对其进行声明。
int ordinal():返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。
String toString():返回枚举常量的名称,它包含在声明中

枚举值:枚举值是一个常量,也可以称作枚举常量,通过javap命令可以看到,每个枚举值的修饰符是 public final static ,系统会自动添加这些修饰符。

成员变量:枚举中也有成员变量。

构造方法:枚举中也有一个无参的默认的构造方法,因为对应的枚举常量的数量是在限定范围内,不能再创建其他对应的枚举常量,所有构造方法是私有化的。一旦创建了有参的构造方法,无参的构造方法也就会消失。

一般方法:可以有一般方法,每个枚举值可调用。

抽象方法:枚举中可以存在抽象方法。一旦有抽象方法,每个枚举值必须要覆写这个抽象方法,格式类似于匿名内部类的写法.

 枚举值(){

    被覆写的抽象方法(){ }

}


枚举的用法:

1.常量

public enum day{
	SUN,MON,TUE,WED,THI,FRI,SAT
}

2.带有方法的枚举

构造方法:

package ny;


public class EnumExam {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		WeekDay weekday=WeekDay.SUN;
		System.out.println(weekday.day);
		System.out.println(weekday.week);
		
	}
	public enum WeekDay{
		SUN("星期天",0);
		private int day;
		public int getDay() {
			return day;
		}
		public void setDay(int day) {
			this.day = day;
		}
		public String getWeek() {
			return week;
		}
		public void setWeek(String week) {
			this.week = week;
		}
		private String week;
//带有两个参数的构造方法
		private  WeekDay(String week,int day){
			this.week = week;
			this.day =day;
		}
	}
}




普通方法:

package ny;


public class EnumExam {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		WeekDay weekday= WeekDay.SUN;
		WeekDay.weekday(weekday);
		WeekDay weekday2= WeekDay.FRI;
		WeekDay.weekday(weekday2);
		
		
	}
	public enum WeekDay{
		SUN,MON,TUE,WED,THI,FRI,SAT;
//普通方法
		public static void weekday(WeekDay weekday){
			switch(weekday){
			case SUN:System.out.println(WeekDay.SUN);
			break;
			case MON:System.out.println(WeekDay.MON);
			break;
			case TUE:System.out.println(WeekDay.TUE);
			break;
			case WED:System.out.println(WeekDay.WED);
			break;
			case THI:System.out.println(WeekDay.THI);
			break;
			case FRI:System.out.println(WeekDay.FRI);
			break;
			case SAT:System.out.println(WeekDay.SAT);
			} 
		}
	}
}


抽象方法

package ny;

public class EnumExam {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Light light = Light.GREEN;
		System.out.println(light.nextLight());	
		System.out.println(light.getTime());	
	}
	public enum Light{
		RED(30) {
			@Override
			public Light nextLight() {
				// TODO Auto-generated method stub
				return GREEN;
			}
		},GREEN(35) {
			@Override
			public Light nextLight() {
				// TODO Auto-generated method stub
				return YELLOW;
			}
		},YELLOW(5) {
			@Override
			public Light nextLight() {
				// TODO Auto-generated method stub
				return RED;
			}
		};
//定义抽象方法
		public abstract Light nextLight();
		private int time;
		public int getTime() {
			return time;
		}
		public void setTime(int time) {
			this.time = time;
		}
//构造方法带有int类型一个参数
		private Light(int time){
			this.time = time;
		}
	}
}

                     

 ------- android培训java培训、期待与您交流! ----------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值