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、结果超过两种情况且可以一枚一枚列举出来的,建议用枚举类型

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/501031.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python中的get函数_python之函数用法get()

# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法get() #http://www.runoob.com/python/att-dictionary-get.html #dict.get(key, defaultNone) #说明:返回指定键的值,如果值不在字典中返回默认值. #key:要查找的键 #default:如果指定键…

vscode生成vue模板快捷键_VSCode写vue项目一键生成.vue模版,修改定义其他模板的方法...

1. 安装一个插件,识别vue文件2.新建代码片段文件–>首选项–>用户代码片段–>点击新建代码片段–取名vue.json 确定3.粘贴入自己写的.vue模板{"Print to console": {"prefix": "vue","body": ["","…

Exception in thread “main“ java.io.FileNotFoundException: C:\Temp (拒绝访问。)

Exception in thread "main" java.io.FileNotFoundException: C:\Temp (拒绝访问。) at java.io.FileInputStream.open0(Native Method) at java.io.FileInputStream.open(FileInputStream.java:195) at java.io.FileInputStream.<init>(FileInput…

linux 切换root账号_Linux 服务器的安全保障,看看这些

作为一种开放源代码的操作系统&#xff0c;Linux 服务器以其安全&#xff0c;高效和稳定的显著优势而得以广泛应用&#xff0c;但是&#xff0c;若不加以控制&#xff0c;也不见得安全到哪里&#xff0c;这篇博文主要从账号安全控制、系统引导和登录控制的角度&#xff0c;来进…

打印纸张尺寸换算_纸张尺寸与开(K)数换算

开本按照尺寸的大小&#xff0c;通常分三种类型&#xff1a;大型开本、中型开本和小型开本。以7871092的纸来说&#xff0c;12开以上为大型开本&#xff0c;16&#xff5e;36开为中型开本&#xff0c;40开以下为小型开本&#xff0c;但以文字为主的书籍一般为中型开本。开本形状…

JAVA进阶开发之(异常类)

保姆级别的异常类教学&#xff08;附代码&#xff09; 目录 1、什么是异常&#xff1a; 2、 java语言中异常以什么形式存在的呢&#xff1f; 3、异常对应的现实生活中是怎样的&#xff1f; 4、异常处理机制 5、异常处理的具体方式 6、运行时异常编写程序时可以不处理 7…

bat文件打开一闪就没了_window文件夹目录树的创建

问题描述当我们的项目文件夹逐渐丰满&#xff0c;各类文件种类繁多&#xff0c;为了增强项目资料的自明性&#xff0c;便于资料管理和交接&#xff0c;有必要对项目文件进行汇总说明。要进行文件汇总&#xff0c;首先要提取文件的目录树。什么是目录树呢&#xff1f;在cmd黑窗口…

python中和为k的个数_程序查找在python中总计为k的不同组合的数量

假设我们有一个称为nums和另一个数字k的不同数字的列表&#xff0c;我们必须找到总计为k的不同组合的数量。您可以在创建组合时重复使用数字。因此&#xff0c;如果输入像nums [2&#xff0c;4&#xff0c;5] k 4&#xff0c;那么输出将是2&#xff0c;因为我们可以将两个这样…

JAVA进阶开发之(异常练习题)

编写程序模拟用户注册&#xff1a; 1、程序开始执行的时候&#xff0c;提示用户输入“用户名”和“密码”信息 2、输入信息之后&#xff0c;后台JAVA程序模拟用户注册 3、注册时用户名要求长度在【6-14】之间&#xff0c;小于或者大于都表示异常 注意&#xff1a; 完成注册的…

boolean 默认_MySQL数据类型测试:BOOLEAN、TINYINT测试数据总结(第八节)

前面几节Amy给大家分享了STE集合类型和枚举类型ENUM的测试数据&#xff0c;还没来得及看到的读者可以点击这里查看往期文章。之前看到一些平台上很多人咨询mysql是否提供布尔类型的问题。MySQL数据库确实提供布尔类型&#xff0c;此数据类型的关键字可以写成&#xff1a;布尔类…

flex vue 垂直居中居上_推荐几种在移动端实现垂直居中的方法

推荐几种在移动端实现垂直居中的方法。方法1:table-cellhtml结构垂直居中CSS.box1{display: table-cell;vertical-align: middle;text-align: center;}方法2&#xff1a;display:flex.box2{display: flex;justify-content:center; align-items:Center;}12345方法3&#xff1…

JAVA进阶开发之(数组练习题)

1、题目&#xff1a; 写一个Army类&#xff0c;代表一支军队这个类有一个属性&#xff0c;Weapon[ ] w 数组&#xff0c;用来存储该军队所有武器Army类提供一个构造方法&#xff0c;构造方法里面通过传递一个int类型的参数来限定该类所能拥有的最大武器数量&#xff0c;并用…

python读单行文本求平均值_利用Python读取json数据并求数据平均值

要做的事情&#xff1a;一共十二个月的json数据(即12个json文件)&#xff0c;json数据的一个单元如下所示。读取这些数据&#xff0c;并求取各个(100多个)城市年、季度平均值。 { "time_point": "2014-01", "area": "***", "aqi&…

netty cpu 占用率 高_Netty 是如何支撑高性能网络通信的?

作为一个高性能的 NIO 通信框架&#xff0c;Netty 被广泛应用于大数据处理、互联网消息中间件、游戏和金融行业等。大多数应用场景对底层的通信框架都有很高的性能要求&#xff0c;作为综合性能最高的 NIO 框架 之一&#xff0c;Netty 可以完全满足不同领域对高性能通信的需求。…

JAVA进阶教学之(单链表数据结构)

什么是链表&#xff1a; 内存地址不连续&#xff0c;基本单元是节点对象Node&#xff0c;单链表尾结点默认是null 什么是链表中的节点&#xff1a; 节点是单链表中的基本单元&#xff0c;每一个节点都有两个属性 属性一&#xff1a;存储的数据 属性二&#xff1a;下一个节点的内…

eclipse maven打包_Maven 学习

1 Maven 简介Maven 使用项目对象模型&#xff08;POM&#xff0c;Project Object Model&#xff09; 的概念&#xff0c;可以通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具2 Maven 的下载与IDE 的整合1 下载地址http://maven.apche.org2 Eclipse 整合Mave…

vue如何输出一个值_如何利用vue获取当前点击的元素并传值(图文教程) -

thinkphp开发的一个项目&#xff0c;登录成功后又跳转到登录页面&#xff0c;在提交信息后输出session都是正常的&#xff0c;没有问题&#xff0c;但是页面跳转后&#xff0c;session出现丢失现象&#xff0c;无法正常完成登陆。通过查找资料&#xff0c;发现原来是bom头的原因…

JAVA进阶教学之(泛型)

泛型 引言&#xff1a; 泛型&#xff1a;泛型允许程序员在编写代码时使用一些以后才指定的类型&#xff0c;在实例化时作为参数指明这些类型人话&#xff1a;泛型对规定范围产生约束&#xff0c;约束后只能存储泛型指定的类型诞生&#xff1a;JDK5.0以后作用&#xff1a;泛型旨…

python怎么设置代码执行时间_python 代码运行时间获取方式详解

我们知道为了提高代码的运行速度&#xff0c;我们需要对书写的python代码进行性能测试&#xff0c;而代码性能的高低的直接反馈是电脑运行代码所需要的时间。这里将介绍四种常用的测试代码运行速度的方法。 第一种&#xff1a;使用time模块对代码的运行时间进行统计&#xff0c…

JAVA进阶教学之(foreach)

foreach&#xff1a; 概念&#xff1a;就是for循环的一个增强版&#xff0c;可以方便程序员对于数组的直接操作&#xff0c;不用考虑数组下标的情况下进行遍历输出 代码演示&#xff1a; package com.lbj.javase.collection;public class ForEachTest01 {public static void m…