Live2D
复制代码

06-枚举类

枚举类enum

1、枚举类的作用

package q枚举类enum;

/*
 * 		以下java程序没有使用枚举类,分析其在设计上有什么缺陷?
 * 		
 * 			缺陷在于:方法的返回值类型上,该需求返回int不恰当
 * 					因为最后的结果只是成功与失败,那么最好使用boolean类型,布尔类型的true和false正好表示两种不同的状态
 * 					int类型的话如果程序员写错其他的数值,在编译和运行是不会报错的,这样可能偏离了需求
 * 			追求的是:尽量在编译阶段将所有错误找出来
 * 
 * 			思考:以下方法中的结果只有两种,使用布尔类型返回,很实用。
 * 				然而在以后的开发过程中可能方法的结果包括3种、4种等甚至更多的结果,
 * 				这些可能出现的结果都是能够数清楚的,可以一枚一枚列举出来的,这时布尔类型就无法
 * 				满足需求了,因而我们就要用java中的枚举类型。
 */

public class EnumTest01 {
	
	public static void main(String[] args) {
		
		int retValue1 = divide(10, 5);
		System.out.println(retValue1);
		
		System.out.println("==========================");

		int retValue2 = divide(10, 0);
		System.out.println(retValue2);
		
	}
	
	/**
	 * (需求)设计者说:以下程序计算俩个int类型数据的商,计算成功返回1,计算失败返回0
	 * @param a	int类型数据
	 * @param b	int类型数据
	 * @return	计算成功返回1,计算失败返回0
	 */
	public static int divide(int a,int b) {
		
		try {
			
			int c = a/b;
			//执行到这表示代码没有发生异常,执行成功
			System.out.println(a+"/"+b+"="+c);
			return 1;
			
		} catch (Exception e) {
			// TODO: handle exception
			//执行到这表示发生异常,执行失败
			System.out.println("捕获到异常:"+e);
			return 0;
		}
		
	}

}

2、使用枚举类

package q枚举类enum;

/*
 * 		以下程序使用枚举改造程序
 * 
 * 		总结:
 * 			1、枚举是一种引用数据类型
 * 			2、枚举类型定义的语法:
 * 				enum 枚举类型名{
 * 					枚举值1,枚举值2,...
 * 				}
 * 			枚举值是常量,但并不需要赋值,直接大写
 * 			3、结果只有两种情况的,建议使用布尔类型
 * 			结果超过两种并且还是可以一枚一枚列举出来的,建议使用枚举类型。
 * 			例如:颜色、四季、星期等都可以使用枚举类型
 */

public class EnumTest02 {
	
	public static void main(String[] args) {
		
		Result value = divide(18, 5);
		System.out.println(value == Result.SUCCESS?"计算成功":"计算失败");
		
	}
	
	/**
	 * (需求)设计者说:以下程序计算俩个int类型数据的商,计算成功返回SUCESS,计算失败返回FAIL
	 * @param a	int类型数据
	 * @param b	int类型数据
	 * @return	计算成功返回SUCESS,计算失败返回FAIL
	 */
	public static Result divide(int a,int b) {
		
		try {
			
			int c = a/b;
			//执行到这表示代码没有发生异常,执行成功
			return Result.SUCCESS;
			
		} catch (Exception e) {
			// TODO: handle exception
			//执行到这表示发生异常,执行失败
			return Result.FAIL;
		}
		
	}


}

enum Result{
	SUCCESS,FAIL
}

3、枚举类的扩展

package q枚举类enum;

/*
 * 季节枚举类型
 */

public enum Season {
	
	SPRING,SUMMER,AUTUMN,WINTER

}

package q枚举类enum;

import java.util.Scanner;

public class SwitchTest {
	
	public static void main(String[] args) {
		
		//switch语句支持枚举类型
		//switch语句也支持String、int类型,低版本JDK只支持int
		switch (Season.AUTUMN) {
		case SPRING:
			System.out.println("春天");
			break;
			
		case SUMMER:
			System.out.println("夏天");
			break;
			
		case AUTUMN:
			System.out.println("秋天");
			break;
			
		case WINTER:
			System.out.println("冬天");
			break;

		default:
			System.out.println("未匹配到相关季节");
			break;
		}
		
	}

}

posted @ 2021-07-23 18:08  Milen-jie  阅读(36)  评论(0编辑  收藏  举报