Java枚举

Java枚举

枚举类型可以取代以以往常量的定义,即将常量封装在的类或接口中,此外,枚举它还提供了安全检查功能。枚举类型本质上还是以类的形式存在。使用枚举类型可以取代以往常量的方式,同时枚举类型还赋予程序在编译时进行检查。
使用枚举类型设置常量:

interface Constants{
	//将常量放置在接口
	public static final int Constants_A = 1;
	public static final int Constants_B = 2;
}
public class ConstantsTest {
	enum Constants2{
		//将常量放置在枚举类型中
		Constants_A,Constants_B
	}
	//使用接口定义常量
	public static void doit(int c){//定义一个方法,这里参数为int型
		switch(c){//根据常量的值做不同操作
		case Constants.Constants_A:
			System.out.println("doit() Constants_A");
			break;
		case Constants.Constants_B:
			System.out.println("doit() Constants_A");
			break;
		}
	}
	public static void doit2(Constants2 c){//定义一个参数对象的枚举类型的方法
		switch(c){
		case Constants_A:
			System.out.println("doit2() Constants_A");
			break;
		case Constants_B:
			System.out.println("doit2() Constants_B");
		}
	}
	public static void main(String[] args) {
		ConstantsTest.doit(Constants.Constants_A);//使用接口中定义的常量
		ConstantsTest.doit2(Constants2.Constants_A);//使用接口中定义的常量
		ConstantsTest.doit2(Constants2.Constants_A);//使用接口中定义的常量
		//ConstantsTest.doit(3);//使用接口中定义的常量
	}
}

运行结果:
在这里插入图片描述
枚举类型常用的方法:
1、values()
该方法将枚举类型的成员变量示例以数组的形式返回,也可以通过该方法取值

/**
 * values()
 * 
 * values()方法将枚举类型的成员变量示例以数组的形式返回
 * @author 我是灰太狼
 *
 */
public class ShowEnum {
	enum Constants2{//将常量放置在枚举类型中
		Constants_A,Constants_B
	}
	//循环有values()方法返回的数组
	public static void main(String[] args) {
		for (int i = 0; i < Constants2.values().length; i++) {
			System.out.println("枚举类型成员变量:"+Constants2.values()[i]);
		}
	}
}

运行结果:
在这里插入图片描述
2、valueOf()与compareTo()
valueOf()可以将普通字符串转换为枚举类型,compareTo()方法用于比较两个枚举类型对象定义时的顺序

/**
 * valueOf()与compareTo()
 * 
 * valueOf()可以将普通字符串转换为枚举类型
 * compareTo()方法用于比较两个枚举类型对象定义时的顺序
 * @author 我是灰太狼
 *
 */
public class EnumMethodTest {
	enum Constants2{//将常量放置在枚举类型中
		Constants_A,Constants_B
	}
	//定义比较枚举类型方法,参数类型为枚举类型
	public static void compare(Constants2 c){
		//根据values方法返回的数组做循环操作
		for (int i = 0; i < Constants2.values().length; i++) {
			//将比较结果返回
			System.out.println(c+"与"+Constants2.values()[i]+"的比较结果为:"
					+c.compareTo(Constants2.values()[i]));
		}
	}
	//在主方法调用compare()方法
	public static void main(String[] args) {
		compare(Constants2.valueOf("Constants_B"));
	}
}

运行结果:
在这里插入图片描述
3、ordinal
枚举类型中的ordinal()方法用于获取某个枚举对象的位置索引值

/**
 * ordinal()
 * 枚举类型中的ordinal()方法用于获取某个枚举对象的位置索引值
 * @author 我是灰太狼
 *
 */
public class EnumIndexTest {
	enum Constants2{//将常量放置在枚举类型中
		Constants_A,Constants_B
	}
	public static void main(String[] args) {
		for (int i = 0; i < Constants2.values().length; i++) {
			//在循环中获取枚举类型成员的索引位置
			System.out.println(Constants2.values()[i]+"在枚举类型中的位置索引值"
					+Constants2.values()[i].ordinal());
		}
	}
}

运行结果:
在这里插入图片描述
使用枚举类型的优势:
枚举类型声明提供了一种用户友好的变量定义方法,枚举了某种数据类型所有可能出现的值。枚举类型,它具有以下特点:
1、类型安全。
2、紧凑有效的数据定义。
3、可以和程序其他部分完美交互。
4、运行效率高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值