没有使用枚举的案例:
package com.javaSe.Enum; /* 这个案例没有使用java中的枚举,在设计方面有什么缺陷? 以下代码可以编译,也可以运行。没有问题。 就是设计上你觉得有什么缺陷? */ public class EnumTest { public static void main(String[] args) { // System.out.println(10 / 0); // java.lang.ArithmeticException: / by zero 异常:除数为0 /*int retValue = divide(10,2); System.out.println(retValue);// 0 int retValue2 = divide(10,0); System.out.println(retValue2);// 1*/ boolean success = divide(10,2); System.out.println(success ? "计算成功" : "计算失败"); } /** * 以下程序,计算两个int类型数据的商,计算成功返回1,否则返回0 * @param a int类型的数据 * @param b int类型的数据 * @return 返回1表示成功,返回0表示失败 */ /* 设计缺陷:在这个方法的返回值类型上,返回一个int不恰当。 既然最后的结果只是成功和失败,最好使用boolean类型。 因为true和false正好可以表示两种不同的状态。 */ /*public static int divide(int a,int b){ try { int c = a / b; // 程序执行到此处表示以上代码没有异常。表示执行成功。 // 返回10已经偏离了需求,实际上已经出错了,但是编译器没有检测出来。 // 我们一直想追求的是:所有的错误尽可能让编译器找出来,所有的错误越早发现越好。 return 1; }catch (Exception e){ // 执行到这里,表示程序出现了异常,执行失败。 return 0; } }*/ // 这种设计不错 public static boolean divide(int a,int b){ try { // 程序执行到此处表示以上代码没有异常。表示执行成功。 int c = a / b; return true; }catch (Exception e){ // 执行到这里,表示程序出现了异常,执行失败。 return false; } } /* 思考:以上的这个方法设计没毛病,挺好,返回true和false表示两种情况, 但是在以后的开发中,有可能遇到一个方法的执行结果可能包括三种情况,四种情况,五种情况不等,但是每一个都是可以数清楚的, 一枚一枚都是可以列举出来的。 这个布尔类型就无法满足需求了。此时需要使用java语言中的枚举类型。 */ }
枚举的案例以及创建枚举:
package com.javaSe.Enum; /* 采用枚举的方式改造程序 总结: 1 枚举是一种引用类型数据 2 枚举类型怎么定义,语法是: enum 枚举类型名{ 枚举值1,枚举值2 } 3 结果只有两种情况的,建议使用boolean类型。 结果超过两种还是可以一枚一枚列举出来的,建议使用枚举类型。 例如:颜色、四季、星期等都可以使用枚举类型。 */ public class EnumTest01 { public static void main(String[] args) { Result r = divide(10,0); System.out.println(r == Result.SUCCESS ? "0" : "1"); } /** * 计算两个int类型数据的商 * @param a int * @param b int * @return SUCCESS表示成功 FAIL表示失败 */ public static Result divide(int a,int b){ try { int c = a / b; return Result.SUCCESS; }catch (Exception e){ return Result.FAIL; } } } // 枚举:一枚一枚可以列举出来的,才建议使用枚举类型 // 枚举编译之后也是生成class文件。 // 枚举也是一种引用数据类型。 // 枚举中的每一个值可以看做是常量 enum Result{ // SUCCESS 是枚举Result类型中的一个值。 // FAIL 是枚举Result类型中的一个值。 // 枚举中每一个值,可以看做是"常量" SUCCESS,FAIL }
创建颜色枚举:
package com.javaSe.Enum; /*颜色枚举类型*/ public enum Color { /* 颜色值:红 蓝 黄 黑 */ RED,BLUE,YELLOW,BLACK }
创建四季枚举:
package com.javaSe.Enum; /** * 四季枚举 */ public enum Season { // 春夏秋冬 SPRING,SUMMER,AUTUNM,WINTER }
switch支持枚举案例:
package com.javaSe.Enum; public class SwitchTest { public static void main(String[] args) { // switch支持枚举类型。 /* switch也支持String,int,枚举 低版本不支持String 枚举,只支持int */ switch (Season.SUMMER){ case SPRING: System.out.println("春天"); break; case SUMMER: System.out.println("夏天"); break; case AUTUNM: System.out.println("秋天"); break; case WINTER: System.out.println("冬天"); break; } } }