JAVA进阶教学之(Enum枚举类)
首先,我们为什么要学习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枚举类)相关推荐
- JAVA进阶教学之(String类的常用方法)
接下来我们进入的学习章程,就是可以通过查阅帮助文档进行实际的应有 1. char charAt(int index) 返回指定索引的 char价值. 代码示例: public class String ...
- JAVA进阶教学之(Object类中的equals方法)
public boolean equals(Object obj){return (this == obj); } 原始equals方法是判断两个对象的内存地址是否相等的(内存地址相等,保存的值也相等 ...
- JAVA进阶教学之(String类的构造方法)
试题: 问:以下程序一共创建了几个对象 public class StringTest03 {public static void main(String[] args) {String s1=new ...
- JAVA进阶教学之(Object类中的hashCode方法)
import java.util.Objects;/* hashCode方法 在Object中的hashCode方法是怎样的? public native int hashCode(); 这个方法不是 ...
- JAVA进阶教学之(Object类的toString方法)
1.toString public String toString() 返回对象的字符串表示形式.总的来说,这 toString方法返回一个字符串,"以文本方式表示"这个对象.其结 ...
- Java中的enum枚举类
首先说说为什么要写这个enum枚举类吧,是群里有个新手问:怎样把enum类中的值遍历得到,其实自己用的也很少.自己也是确实不知道,于是我去网上搜了不少,总结了些,希望对大家有帮助:首先我说说怎样遍历枚 ...
- Java分享笔记:自定义枚举类 使用enum关键字定义枚举类
在JDK1.5之前没有enum关键字,如果想使用枚举类,程序员需要根据Java语言的规则自行设计.从JDK1.5开始,Java语言添加了enum关键字,可以通过该关键字方便地定义枚举类.这种枚举类有自 ...
- java enum枚举类的用法以及高级玩法
enum(枚举)类介绍 java枚举类是一组预定义常量的集合,使用enum关键字声明这个类,常量名称官方建议大写 1.enum类基本用法 举一个常见的例子,例如星期就可以描述为一个枚举类,如下 pub ...
- JAVA进阶教学之(集合)
目录 1.集合概述 2.集合存储的数据类型 3.不同的集合,底层都会对应不同的数据结构 4.集合继承结构图(部分接口和类) 5.Collection接口中常用的方法 6.Collection 集合迭代 ...
最新文章
- Linux监控工具介绍系列——free`
- c# 拼接lambda表达式 (转载)
- Qt 原理-MOC(3) 对象模型
- python编程中常用的12种基础知识总结
- 四、自然语言处理的主要挑战
- Natasha 4.0 探索之路系列(四) 模板 API
- Skeljs – 用于构建响应式网站的前端开发框架
- 08年冬季足协代表VS三水喜健友谊赛
- 面试官:Spring该选择哪个构造方法来进行实例化?画重点要考的
- AspectJ——预编译方式实现AOP
- 高德地图上覆盖物polygon方法的使用
- 诱人的 TypeScript 视频教程(69 个视频)
- 计算机专业大学生怎么学习?
- 【算法:leetcode】双指针:142. 环形链表 II 633. 平方数之和
- 没有任何借口-----提升职场能力的文章
- 2022-9-28 c高级的复习
- 使用async.whilst要注意的地方
- java.util包
- 异常:java lang AbstractMethodError
- 本周内外盘行情回顾2022.4.24(下周提保、2205结束、节后美联储降息,预计波动加剧)