Java枚举类型

前言

在众多编程语言中如果想选出一个最没有用的数据类型,那我觉得肯定是枚举类型了,因为通过定义常量的方式就可以替代枚举的定义。其实单从数值运算方面考虑枚举类型,它的存在确实没有什么必要,但如果从程序可读性角度来看,它就是程序员的福音,毕竟程序代码是给人看的,试想一下,用1~7来代表星期和用枚举类型来表示星期的直观性差异就知道了。此外在Java中枚举类型本质是以类的形式存在的,它的一个优点就是提供了安全检查的功能

常量与枚举

通常在接口中用final与static来修饰常量,这样一来该常量就不能够被修改,方便在程序中直接使用。

public interface Constants {

       public static final int Constants_A = 1;

       public static final int Constants_B = 2;

       public static final int Constants_C = 3;

}

当使用enum关键字定义枚举类型时,常量可以这样定义:

public enum EnumConstants {

       Constants_A,

       Constants_B,

       Constants_C;

}

枚举类型可以看作一个类,继承于java.lang.Enum类,当定义一个枚举类型时,每一个枚举成员都可以看作是枚举类型的一个实例,这些枚举成员都默认被final、public、static修饰,所以当使用枚举类型成员时直接使用枚举类型名称调用枚举类型成员即可。

枚举类型中的构造方法

枚举类型比较有意思的是它的构造方法,通过自定义构造方法,用户可以实现自定义不同的枚举。比如定义一个描述星期的枚举、一个描述颜色的枚举、一个描述订单状态的枚举,这些在软件项目中使用频率都很高,在程序设计中合理利用枚举,可以使代码可读性大大增强。

枚举类型的成员可以视为枚举的一个实例,那么我们可以为它们添加构造方法,但是规定这个构造方法必须为private修饰符所修饰。以下是一个weekdayenum构造方法实例。

public enum WeekDayEnum {
	Monday(1,"星期一"),
	Tuesday(2,"星期二"),
	Wednesday(3,"星期三"),
	Thursday(4,"星期四"),
	Friday(5,"星期五"),
	Saturday(6,"星期六"),
	Sunday(7,"星期天");
	
	private int i;
	private String description;
	//定义WeekDayEnum构造方法
	private WeekDayEnum(int i, String description){
		this.i = i;
		this.description =description;
	}
	//定义外部访问方法
	public int Getnum(){
		return i;
	}
	public String getDescroption(){
		return description;
	}
}

public class Main {
	public static void main(String[] args) {
		//静态方法需要用 类名.方法 调用,静态方法属于类
		//循环输出星期枚举描述
		for(int i = 0; i < WeekDayEnum.values().length; i++){
			System.out.println(WeekDayEnum.values()[i]+" 代表"+WeekDayEnum.values()[i].getDescroption());
		}
	}

}

枚举类型声明提供了一种用户友好的变量定义方法,枚举了某种数据类型所有可能出现的值,它具有以下优点:

1.类型安全

2.紧凑有效的数据定义

3.可以和程序其他部分完美交互

4.运行效率高

总结

枚举在编程语言中作为最尴尬的形象出现,特别是从数据运算处理角度看待时。因为几乎没有人会在程序中对枚举进行加减乘除等数据处理操作,但不可忽略的一点是,枚举在程序中应用广泛,最重要一点是它能很好与程序其他部分完美交互,能使编写的代码通俗易懂,毕竟代码是用来看的,程序是用来执行的。秋意绵绵,整理了一下Java枚举知识,温故而知新。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值