Java核心技术卷一 -第五章:枚举类再认识

系列文章目录

Java核心技术卷一 -第一章:java“白皮书”的关键术语
Java核心技术卷一 -第三章:数据类型
Java核心技术卷一 -第三章:变量与常量
Java核心技术卷一 -第三章:运算符
Java核心技术卷一 -第三章:字符串
Java核心技术卷一 -第三章:输入与输出
Java核心技术卷一 -第三章:数组
Java核心技术卷一 -第四章:类之间的关系-依赖
Java核心技术卷一 -第四章:预定义类-LocalDate类小应用
Java核心技术卷一 -第四章:构造器
Java核心技术卷一 -第四章:null引用
Java核心技术卷一 -第四章:方法参数
Java核心技术卷一 -第四章:对象构造
Java核心技术卷一 -第五章:覆盖方法与super
Java核心技术卷一 -第五章:super关键字
Java核心技术卷一 -第五章:类的强制类型转换与instanceof操作符
Java核心技术卷一 -第五章:抽象类与abstract关键字
Java核心技术卷一 -第五章:Object类的toString方法
Java核心技术卷一 -第五章:数组列表初识
Java核心技术卷一 -第五章:装箱和拆箱

前言

本人为java初学者,文章内容仅为个人学习总结分享,其中包含了大量Java核心技术卷一里面的文章内容以及一些网站文章内容,由于参考文章过多,在此并不一一列出,如有侵权,请联系删除。

一、为什么使用枚举类型

这个案例没有使用java中的枚举,分析以下程序,在设计方面有什么缺陷?

代码展示:

public class Test02 {
    public static void main(String[] args) {
        int retVaule=divide(10,2);
        System.out.println(retVaule == 0 ?"计算成功":"计算失败");
    }

    /**
     * 需求(这是设计者说的!):以下程序,计算两个int类型数据的商,计算成功返1,计算失败返回0
     * @param a int类型的数据
     * @param b int类型的数据
     * @return 返回1表示成功,返回0表示失败!
     */
    //设计缺陷?在这个方法的返回值类型上,一个int不始当。
    //即然最后的结果只是成功和失败,最好使用布尔类型。固为布尔类型true和false正好可以表示两种不同的状态,
    public static int divide(int a, int b) {
        try {
            int c = a / b;
            //程序执行到此处表示以上代码没有发生异常。表示执行成功!
            return 1;

            //返回1Θ已经离了需求,实际上已经出错了,但是编译器没有检查出来。
            //我们一直想追求的是:所有的错误尽可能让编译器找出来,所有的错误越早发现越好!
            //return 10;
        } catch (Exception e) {
            //程序执行到此处表示以上程序出现了异常!
            //表示执行失败!
            return 0;
        }
    }
}

即然最后的结果只是成功和失败,最好使用布尔类型。固为布尔类型true和false正好可以表示两种不同的状态

代码展示:

public class Test02 {
    public static void main(String[] args) {
        boolean succes=divide(10,2);
        System.out.println(succes?"计算成功":"计算失败");
    }

    /**
     * 需求(这是设计者说的!):以下程序,计算两个int类型数据的商,计算成功返1,计算失败返回0
     * @param a int类型的数据
     * @param b int类型的数据
     * @return 返回1表示成功,返回0表示失败!
     */
    //这种设计不错!
    public static boolean divide(int a, int b) {
        try {
            int c = a / b;
            //程序执行到此处表示以上代码没有发生异常。表示执行成功!
            return true;
        } catch (Exception e) {
            //程序执行到此处表示以上程序出现了异常!
            //表示执行失败!
            return false;
        }
    }
}

思考:

以上的这个方法设计没毛病,挺好,返回true利false表示两种情况,但是在以后的开发中,有可能遇到个方法的执行结果可能包括三种情况,四种情况,五种情况不等,但是每一个都是可以数清楚的,一枚一枚都是可以列举出来的。这个布尔类型就无法满足需求了。此时需要使用java语言中的枚举类型。

二、枚举类型的使用

小总结:

在这里插入图片描述

采用枚举的方式改造程序

代码展示:

public class Test02 {
    public static void main(String[] args) {
        Result r=divide(10,2);
        System.out.println(r==Result.SUCCESS?"计算成功":"计算失败");
    }

    /**
     * 需求(这是设计者说的!):以下程序,计算两个int类型数据的商,计算成功返1,计算失败返回0
     * @param a int类型的数据
     * @param b int类型的数据
     * @return 返回Result.SUCCESS表示成功,返回Result.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,FAIL
}

总结

以上就是本文的内容,记录了一些关于java“枚举类再认识”的内容,本人也是刚开始接触java,不能保证总结内容的正确性,若是有错误的话,欢迎大家指出,谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luodiab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值