Java基础细碎知识点《枚举》
作者:互联网
1.什么是枚举?
在数学和计算机科学中,枚举是一个被命名为整型常数的集合,枚举在生活中也很多比如:
星期的表示 : SUNDY、MONDY、TUESTDAY、WEDNESDAY、THURSDAY、FRIDAY、SATURDAY
性别 : FEMALE女、MALE男
简单来说,枚举就是一个集合。当一个类的对象是有限个且个数确定的时候,我们就可以定义一个枚举来存放这些对象。
2.ENUM类
java.lang.Enum类是SUM公司提供的java语言的公共基类,我们使用enum关键字来定义枚举类,我们定义的枚举类是隐式继承Enum类的
3.为什么使用枚举类
package Test01; /* 这个案例没有使用JAVA中的枚举,分析下面程序,在设计方面有什么缺陷? 以下代码可以运行,没有问题。 就是设计上有什么缺陷?? */ public class EnumTest01 { public static void main(String[] args){ boolean seccess = divide(10,2); System.out.println(seccess?"程序执行成功":"程序执行失败"); boolean seccess2 = divide(10,0); System.out.println(seccess2?"程序执行成功":"程序执行失败"); } /* 需求:(设计者给出的):以下程序,计算两个int数据类型的商,计算成功返回1,计算失败返回0 a 表示被除数 b 表示除数 返回 1 表示成功 返回 0 表示失败 */ //既然最后的结果是boolean类型的数据,那我们就让这个静态方法返回boolean,因为true和false恰好表示了两种不同的状态 public static boolean divide(int a,int b){ try { int c = a / b; //程序执行到此处没有发生异常表示程序执行成功,但是返回一个int类型的数据,在设计的时候就不恰当。我们在下面改造一下 return true; }catch (Exception e){ return false; } } /* * 思考一下:以上的这个程序只有两种结果true和false。那么如果以后的开发中有三种,四种,五种情况不等。 * 但是每一个情况都能数清楚,一枚一枚数清楚,这时候布尔类型就无法满足要求了,此时需要使用Java语言中 * 的枚举类型。 * */ }
4.使用枚举来改造程序
package Test01; /* 采用枚举的方式来改造程序 总结: 1、枚举也是一种引用数据类型 2、枚举怎么定义?语法是什么? enum 枚举类型名{ 枚举值1、枚举值2 } 3、枚举值都是常量。用static final修饰过 4、结果有两种建议使用布尔类型,如果是三种及其以上的话建议使用枚举 例如 :颜色、性别、四季、星期等等 */ public class EnumTest02 { public static void main(String[] args){ Result result=divide(10,2); System.out.println(result == Result.SUCCESS ?"程序运行成功":"程序运行失败" ); } /* 需求:(设计者给出的):以下程序,计算两个int数据类型的商,计算成功返回SUCCESS,计算失败返回FALSE a 表示被除数 b 表示除数 返回 SUCCESS 表示成功 返回 FALSE 表示失败 */ public static Result divide(int a,int b){ try { int c = a / b; return Result.SUCCESS; }catch (Exception e){ return Result.FALSE; } } } enum Result{ SUCCESS,FALSE; }
5.枚举近似于(实际上就是)一个类,这个类里面的所有属性都是常量
/** * 颜色枚举类型 */ public enum Color { /** * 颜色值 */ RED,BLUE,YELLOW,BLACK } /* class MyClass { public static final String RED = "red"; public static final String BLUE = "blue"; public static final String YELLOW = "yellow"; public static final String BLACK = "black"; public static void main(String[] args) { String c = MyClass.RED; System.out.println(c); // RED System.out.println(Color.RED); } } */
6.枚举在switch选择语句中的使用
switch语句支持枚举类型 switch也支持String、int 低版本的JDK,只支持int 高版本的JDK,支持int、String、枚举。 byte short char也可以,因为存在自动类型转换。
public class SwitchTest { public static void main(String[] args) { switch (Season.SPRING) { case SPRING: System.out.println("春天"); break; case SUMMER: System.out.println("夏天"); break; case AUTUMN: System.out.println("秋天"); break; case WINTER: System.out.println("冬天"); break;