首先,我们为什么要学习Enum枚举类

我们引入一段代码:

package com.lbj.javase.enumTest;public class EnumTest01 {public static void main(String[] args) {int retValue=divide(10,2);System.out.println(retValue);int retValue2=divide(10,0);System.out.println(retValue2);}/**** @param a 除数* @param b 被除数* @return 如果返回值是1表成功,是0表失败*/public static int divide(int a,int b){try{int c = a/b;return 1;}catch (Exception e){return 0;}}
}

观察代码我们得知(设计缺陷):

public static int divide(int a,int b){
        try{
            int c = a/b;

//当我们不小心写成了返回值=10,实际上已经出错了,但是编译器没有检查出来
            return 10;
        }catch (Exception e){
            return 0;
        }
    }

这段代码中的返回值 return中的数值是1,但是程序猿很容易手贱写多或者写少

提出:

我们追求的是:所有的错误尽可能让编译器找出来,所有的错误越早发现越好

解决:

改进后的代码

(根据需求,我们确定好了是只要返回的两个可以判断执行与不执行,因此我们可以换成布尔类型的数据,这样就不会像上面出现的在编译的时候找不出错误,实际上运行时是错误的程序)

package com.lbj.javase.enumTest;public class EnumTest01 {public static void main(String[] args) {boolean retValue=divide(10,2);System.out.println(retValue);boolean retValue2=divide(10,0);System.out.println(retValue2);}/**** @param a 除数* @param b 被除数* @return 如果返回值是true表成功,是false表失败*/public static boolean divide(int a,int b){try{int c = a/b;return true;}catch (Exception e){return false;}}
}

思考:

以上第二种的方法设计没有什么问题,返回true和false表示两种情况,但是在以后的开发中,有可能遇到一个方法的返回执行结果包括3种情况,4种情况,5种情况不等。

但是每一个都是可以数清楚的,一枚接着一枚都是可以列举出来的,这时候布尔类型就无法满足需求了,此时就需要使用到枚举类型

关于枚举的代码演示:

注意:此时的返回值类型已经变成枚举型的类名,这就是和上面失败的int类型返回值的一个对比

package com.lbj.javase.enumTest;public class EnumTest02 {public static void main(String[] args) {Result result=divide(10,2);System.out.println(result);}public static Result divide(int a, int b){try{int c=a/b;return Result.SUCCESS;}catch (Exception e){return Result.FA;}}
}
//枚举:一枚一枚可以列举出来,才建议使用枚举类型
//枚举编译之后也是生成class文件,因为它也属于引用数据类型
//枚举中的每一个值可以看成是常量
enum Result{//SUCCESS 是枚举Result类型中的一个值//FA 是枚举Result类型中的一个值//枚举中的每一个值都可以看做是常量SUCCESS,FA
}

总结:

1、枚举是一种引用数据类型,由SUN公司以及封装好成为一个类

2、枚举类型怎么定义?语法:

enum 枚举类型名{

枚举值1,枚举值2

}

3、结果只有两种情况的,建议用布尔类型

4、结果超过两种情况且可以一枚一枚列举出来的,建议用枚举类型

JAVA进阶教学之(Enum枚举类)相关推荐

  1. JAVA进阶教学之(String类的常用方法)

    接下来我们进入的学习章程,就是可以通过查阅帮助文档进行实际的应有 1. char charAt(int index) 返回指定索引的 char价值. 代码示例: public class String ...

  2. JAVA进阶教学之(Object类中的equals方法)

    public boolean equals(Object obj){return (this == obj); } 原始equals方法是判断两个对象的内存地址是否相等的(内存地址相等,保存的值也相等 ...

  3. JAVA进阶教学之(String类的构造方法)

    试题: 问:以下程序一共创建了几个对象 public class StringTest03 {public static void main(String[] args) {String s1=new ...

  4. JAVA进阶教学之(Object类中的hashCode方法)

    import java.util.Objects;/* hashCode方法 在Object中的hashCode方法是怎样的? public native int hashCode(); 这个方法不是 ...

  5. JAVA进阶教学之(Object类的toString方法)

    1.toString public String toString() 返回对象的字符串表示形式.总的来说,这 toString方法返回一个字符串,"以文本方式表示"这个对象.其结 ...

  6. Java中的enum枚举类

    首先说说为什么要写这个enum枚举类吧,是群里有个新手问:怎样把enum类中的值遍历得到,其实自己用的也很少.自己也是确实不知道,于是我去网上搜了不少,总结了些,希望对大家有帮助:首先我说说怎样遍历枚 ...

  7. Java分享笔记:自定义枚举类 使用enum关键字定义枚举类

    在JDK1.5之前没有enum关键字,如果想使用枚举类,程序员需要根据Java语言的规则自行设计.从JDK1.5开始,Java语言添加了enum关键字,可以通过该关键字方便地定义枚举类.这种枚举类有自 ...

  8. java enum枚举类的用法以及高级玩法

    enum(枚举)类介绍 java枚举类是一组预定义常量的集合,使用enum关键字声明这个类,常量名称官方建议大写 1.enum类基本用法 举一个常见的例子,例如星期就可以描述为一个枚举类,如下 pub ...

  9. JAVA进阶教学之(集合)

    目录 1.集合概述 2.集合存储的数据类型 3.不同的集合,底层都会对应不同的数据结构 4.集合继承结构图(部分接口和类) 5.Collection接口中常用的方法 6.Collection 集合迭代 ...

最新文章

  1. Linux监控工具介绍系列——free`
  2. c# 拼接lambda表达式 (转载)
  3. Qt 原理-MOC(3) 对象模型
  4. python编程中常用的12种基础知识总结
  5. 四、自然语言处理的主要挑战
  6. Natasha 4.0 探索之路系列(四) 模板 API
  7. Skeljs – 用于构建响应式网站的前端开发框架
  8. 08年冬季足协代表VS三水喜健友谊赛
  9. 面试官:Spring该选择哪个构造方法来进行实例化?画重点要考的
  10. AspectJ——预编译方式实现AOP
  11. 高德地图上覆盖物polygon方法的使用
  12. 诱人的 TypeScript 视频教程(69 个视频)
  13. 计算机专业大学生怎么学习?
  14. 【算法:leetcode】双指针:142. 环形链表 II 633. 平方数之和
  15. 没有任何借口-----提升职场能力的文章
  16. 2022-9-28 c高级的复习
  17. 使用async.whilst要注意的地方
  18. java.util包
  19. 异常:java lang AbstractMethodError
  20. 本周内外盘行情回顾2022.4.24(下周提保、2205结束、节后美联储降息,预计波动加剧)

热门文章

  1. js中this的指向问题
  2. HTML文字横向滚动
  3. Android Studio中获取SHA1或MD5的方法
  4. 【原创】我所理解的自动更新-外网web服务器配置
  5. JavaScript获取URL参数
  6. 在视图中显示InActive记录
  7. fork vfork exit _exit (转)
  8. 牛客16438 回文日期
  9. 自学python在家怎么上班_【经验分享】转行如何自学Python并且找到工作,分享自己心得...
  10. python 实例化父类对象_在Python中从现有超类实例化子类