Java基础枚举

简介: Java基础枚举

枚举

1、枚举是一种引用数据类型。

2、枚举编译之后也是class文件。

3、枚举类型怎么定义?


enum 枚举类型名{
  枚举值,枚举值2,枚举值3
}


4、当一个方法执行结果超过两种情况,并且是一枚一枚可以列举出来的时候,建议返回值类型设计为枚举类型。结果只有两种情况的,建议使用布尔类型。

结果超过两种并且还是可以一枚一枚列举出来的,建议使用枚举类型。

例如:颜色、四季、星期等都可以使用枚举类型。


示例代码01:


/*
这个案例没有使用java中的枚举,分析以下程序,在设计方面有什么缺陷?
    以下代码可以编译,也可以运行。这些都没有问题。
    就是设计上你觉得有什么缺陷?
 */
public class EnumTest01 {
    public static void main(String[] args) {
        int reValue1 = divide(10, 2);
        System.out.println(reValue1 == 1 ? "运行成功":"运行失败");
        int reValue2 = divide(10, 0);
        System.out.println(reValue2 == 0 ?"运行失败":"运行成功");
        boolean reValue3 = divide01(10, 2);
        System.out.println(reValue3 == true ? "运行成功":"运行失败");
        boolean reValue4 = divide01(10, 0);
        System.out.println(reValue4 == false ? "运行失败":"运行成功");
    }
    // 设计缺陷?在这个方法的返回值类型上。返回一个int不恰当。
    // 既然最后的结果只是成功和失败,最好使用布尔类型。因为布尔类型true和false正好可以表示两种不同的状态。
    public static int divide(int a,int b) {
        try{
        int c = a / b;
            // 程序执行到此处表示以上代码没有发生异常。表示执行成功!
            // 返回10已经偏离了需求,实际上已经出错了,但是编译器没有检查出来。
            // 我们一直想追求的是:所有的错误尽可能让编译器找出来,所有的错误越早发现越好!
            //return 10;
        return 1;
    }catch(Exception e){
        return 0;
    }
    }
    public static boolean divide01(int a,int b){
        try{
            int c = a / b;
            // 程序执行到此处表示以上代码没有发生异常。表示执行成功!
            return true;
        }catch(Exception e){
            return false;
        }
    }
    /*
    思考:以上的这个方法设计没毛病,挺好,返回true和false表示两种情况,
    但是在以后的开发中,有可能遇到一个方法的执行结果可能包括三种情况,
    四种情况,五种情况不等,但是每一个都是可以数清楚的,一枚一枚都是可以
    列举出来的。这个布尔类型就无法满足需求了。此时需要使用java语言中的
    枚举类型。
     */
}


运行结果:


0a2653c851af460fa595bd959398a8f1.png


示例代码02:


public class EnumTest02 {
    public static void main(String[] args) {
        Result r1 = divide(10, 2);
        System.out.println(r1 == Result.SUCCESS ? "运行成功":"运行失败");
    }
    /**
     * 计算两个int类型数据的商
     * @param a int类型
     * @param b int类型
     * @return Result.SUCESS返回成功,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 是枚举Result类型中的一个值
    // FAIL 是枚举Result类型中的一个值
    // 枚举中的每一个值,可以看做是“常量”
    SUCCESS,FAIL
}


运行结果:


2d65d23f6d4748949b924e4057485923.png


示例代码03:


public class SwitchTest {
    public static void main(String[] args) {
        //switch支持枚举类型
        //switch也支持String,int
        //低版本的JDK,只支持int
        //高版本的JDK,支持int,String,枚举
        //byte short char也可以,因为存在自动类型转换
        switch(Season.AUTUMN){
            case SPRING:
                System.out.println("春天");
                break;
            case SUMMER:
                System.out.println("夏天");
                break;
            case AUTUMN:
                System.out.println("秋天");
                break;
            case WINTER:
                System.out.println("冬天");
                break;
        }
    }
}
/*
* 颜色枚举类型
* */
public enum Color {
    RED,BLACK,YELLOW,BLUE
}
/*
* 四季枚举类型
* */
public enum Season {
    /*
    * 春夏秋冬
    * */
    SPRING,SUMMER,AUTUMN,WINTER
}


运行结果:


6de278e6d6694ce5bb08e7e842b7e74b.png

相关文章
|
23天前
|
安全 Java 测试技术
🎉Java零基础:全面解析枚举的强大功能
【10月更文挑战第19天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
103 60
|
1月前
|
存储 缓存 Java
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
67 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
|
5月前
|
Java
【Java基础】输入输出流(IO流)
Java基础、输入输出流、IO流、流的概念、输入输出流的类层次结构图、使用 InputStream 和 OutputStream流类、使用 Reader 和 Writer 流类
170 2
|
2月前
|
安全 Java 索引
Java——反射&枚举
本文介绍了Java反射机制及其应用,包括获取Class对象、构造方法、成员变量和成员方法。反射允许在运行时动态操作类和对象,例如创建对象、调用方法和访问字段。文章详细解释了不同方法的使用方式及其注意事项,并展示了如何通过反射获取类的各种信息。此外,还介绍了枚举类型的特点和使用方法,包括枚举的构造方法及其在反射中的特殊处理。
65 9
Java——反射&枚举
|
2月前
|
安全 Java API
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
|
2月前
|
Java
java小工具util系列4:基础工具代码(Msg、PageResult、Response、常量、枚举)
java小工具util系列4:基础工具代码(Msg、PageResult、Response、常量、枚举)
81 5
|
2月前
|
安全 Java 开发者
Java 枚举(enum)详解
Java 中的枚举(`enum`)是一种特殊的数据类型,用于定义一组固定的常量,提升代码的类型安全性和可读性。枚举使用 `enum` 关键字定义,支持方法和构造函数,具有类型安全、单例、自动序列化等特点,并且可以遍历和用于 `switch` 语句中。实际应用包括状态机、指令集、类型标识等场景。枚举使代码更加清晰易维护。
|
3月前
|
Java
Java枚举使用的基本案例
这篇文章是关于Java枚举的基本使用,通过一个指令下发的代码案例,展示了如何定义枚举、使用枚举以及如何通过枚举实现指令的匹配和处理。
|
3月前
|
Java 开发者
在Java编程中,if-else与switch作为核心的条件控制语句,各有千秋。if-else基于条件分支,适用于复杂逻辑;而switch则擅长处理枚举或固定选项列表,提供简洁高效的解决方案
在Java编程中,if-else与switch作为核心的条件控制语句,各有千秋。if-else基于条件分支,适用于复杂逻辑;而switch则擅长处理枚举或固定选项列表,提供简洁高效的解决方案。本文通过技术综述及示例代码,剖析两者在性能上的差异。if-else具有短路特性,但条件增多时JVM会优化提升性能;switch则利用跳转表机制,在处理大量固定选项时表现出色。通过实验对比可见,switch在重复case值处理上通常更快。尽管如此,选择时还需兼顾代码的可读性和维护性。理解这些细节有助于开发者编写出既高效又优雅的Java代码。
57 2
|
3月前
|
安全 Java 编译器
下一篇
无影云桌面