Java枚举简单介绍

枚举

1、枚举简介

枚举,是java中的一种比较特殊的class,它继承了java.lang. Enum类,也就是说在枚举类中是不能够继承其他类的。枚举类型可以取代以往常量的定义方式,即将常量封装在类或接口中。此外,枚举类型还提供了安全检查功能。枚举类型本质上还是以类的形式存在

以往设置常量,通常将常量放置在接口中,这样在程序中就可以直接使用了,并且该常量不能被修改,因为在接口中定义的常量时,该常量的修饰符为final与static

public interface Color
{
    public static final int RED = 1;
    public static final int GREEN = 2;
    public static final int BLUE = 3;
}

使用枚举定义常量的语法如下:

public enum ColorEnum
{
    RED,
    GREEN,
    BLUE,
}

常量声明 会有一些问题,比如

  1. 类型不安全。比如在一个方法中要求传入形参,用常量的话,形参就是int类型,开发者传入任意类型的int类型值就可以,但是如果是枚举类型的话,那就只能传入枚举类中包含的对象。
  2. 没有命名空间。开发者要在命名的时候以一定的格式来确定这个常量的使用范围,比如是四季的话就是SPRING表示春天,这样另外一个开发者再看这段代码的时候才知道这四个常量分别代表季节。

命名规范:

final常量:使用大写字母命名,并且中间使用下划线进行连接。

enum枚举:使用大写字母命名,并且中间使用下划线进行连接。

public static void doit(ColorEnum c)
{
    switch (c)
    {
        case RED:
            System.out.println("This is RED");
            break;
        case BLUE:
            System.out.println("This is GREEN");
            break;
        case GREEN:
            System.out.println("This is BLUE");
            break;
        default:
            break;
    }
}

public static void main(String[] args)
{
    doit(ColorEnum.RED);
}

2 、操作枚举类型成员的方法

方法名称 具体含义 使用方法

values() 该方法可以将枚举类型成员以数组的形式返回 枚举类型名称.values() valueOf() 该方法可以实现将普通字符串转换为枚举实例 枚举类型名称.valueOf(“ABC”) compareTo() 该方法用于比较两个枚举对象在定义时的顺序 枚举对象.compareTo() ordinal() 该方法用于得到枚举成员的位置索引 枚举对象.ordinal()

(1)values()方法

该方法可以将枚举类型成员以数组的形式返回,也可以通过该方法获取枚举类型的成员。

/**
 * @Author IBing
 * @Date 2022/8/5 21:17
 * @Version 1.0
 */
public class showEnum {
    enum ColorEnum{
        RED,
        BLUE,
        GREEN,
        YELLOW
    }

    public static void main(String[] args) {
        System.out.println("枚举成员有:"+Arrays.toString(ColorEnum.values()));
        System.out.println("=================================");
        for (ColorEnum c: ColorEnum.values()) {
            System.out.println("枚举成员:"+c);
        }
    }
}

执行结果:

Java枚举简单介绍

(2)valueOf()与compareTo()方法

/**
 * 枚举中valueOf()与compareTo()方法的使用
 * @author pan_junbiao
 */
public class EnumMethodTest
{
    enum ColorEnum
    {
        RED, BLUE, GREEN
    }

    // 定义比较枚举类型方法,参数类型为枚举类型
    public static void compare(ColorEnum c)
    {
        // 根据values()方法返回的数组做循环操作
        for (int i = 0; i < ColorEnum.values().length; i++)
        {
            // 将比较结果返回
            System.out.println(c + "与" + ColorEnum.values()[i] + "的比较结果为:" + c.compareTo(ColorEnum.values()[i]));
        }
    }

    public static void main(String[] args)
    {
        // 使用valueOf()将字符串转换为枚举实例
        ColorEnum c = ColorEnum.valueOf("BLUE");
        compare(c);
    }
}

执行结果:

Java枚举简单介绍

说明:调用compareTo()方法返回的结果,正值代表方法中的参数在调用该方法的枚举对象位置之前;0代表两个相互比较的枚举成员的位置相同;负值代表方法中参数在调用该方法的枚举对象位置之后。

(3)ordinal()方法

该方法用于得到枚举成员的位置索引。

public class showEnum {
    enum ColorEnum{
        RED,
        BLUE,
        GREEN,
        YELLOW
    }

    public static void main(String[] args) {

        for (ColorEnum c: ColorEnum.values()) {
            System.out.println("枚举成员 "+ c+" 的位置索引为:"+c.ordinal());
        }
    }

执行结果:

Java枚举简单介绍

3、使用枚举类型的优势

枚举类型声明提供了一种用户友好的变量定义方法,枚举了某种数据类型所有可能出现的值。总结枚举类型,它具有以下特点:

(1)类型安全。

(2)紧凑有效的数据定义。

(3)可以和程序其他部分完美交互。

(4)运行效率高

Original: https://www.cnblogs.com/bingshen/p/16625396.html
Author: 梓默
Title: Java枚举简单介绍

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/609496/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 树的基本概念介绍

    为什么需要树这种数据结构 这是我本人在B站看韩顺平老师数据结构和算法的学习笔记,记录一下,防止忘记 1) 数组存储方式的分析 优点:通过 下标方式访问元素,速度快。对于有序数组,还…

    Java 2023年6月15日
    084
  • Java-SpringBoot整合SpringCloud

    SpringBoot整合SpringCloud 1. SpringCloud特点 SpringCloud专注于为典型的用例和扩展机制提供良好的开箱即用体验,以涵盖其他情况: 分布式…

    Java 2023年6月8日
    091
  • MySQL九:MVCC能否解决幻读问题

    转载~ 幻读【前后多次读取,数据总量不一致】 同一个事务里面连续执行两次同样的sql语句,可能导致不同结果的问题,第二次sql语句可能会返回之前不存在的行。 事务A执行多次读取操作…

    Java 2023年6月8日
    0102
  • 二叉树基础知识

    前言 算法就是一种经常不学就觉得自己是个傻子的存在。所以,复习下吧。 二叉树的基础定义 二叉树节点的度:指的是二叉树 _节点_拥有的 子节点的数量。 二叉树的深度:指的是从根结点开…

    Java 2023年6月7日
    075
  • 在uniapp中使用百度地图的Autocomplete(关键字自动完成提示)不弹出提示框的问题

    let ac = new BMap.Autocomplete({ "input": document.querySelector(‘input’), &quot…

    Java 2023年6月6日
    088
  • 数组(Java)

    数组的定义 数组是相同类型数据的有序集合 数组描述的是相同类型的若干数据,按照一定的先后次序排列组合而成 其中,每个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们 数…

    Java 2023年6月9日
    095
  • day03_2_流程控制

    流程控制 学习目标: 1. idea安装与使用 2. 流程控制if…else结构 3. 流程控制switch结构 4. 流程控制循环结构 5. 流程控制关键字 一、流程控制概述…

    Java 2023年6月8日
    065
  • Spring与Web环境集成

    Spring与Web环境集成 1. ApplicationContext应用上下文获取方式 应用上下文对象是通过 new ClassPathXmlApplicationContex…

    Java 2023年6月5日
    0107
  • JDBC学习

    笔记如上 学了个代码 php;gutter:true; import java.sql.*;</p> <p>public class jdbc01 { pu…

    Java 2023年6月9日
    088
  • qemu aarch64虚拟机创建好后,使用NAT连接网络

    宿主机上创建文件 /etc/qemu-ifup,内容如下 #!/bin/sh # Copyright IBM, Corp. 2010 # Authors: Anthony Ligu…

    Java 2023年5月30日
    062
  • java 集合学习资料收集

    ArrayDeque , LinkedList , Stack的关系差不多就是下图那样 Stack实现了Vector接口,LinkKist实现了Deque,List接口,Array…

    Java 2023年5月29日
    085
  • Ubuntu 安装 Nginx

    安装前可以先检查一下有没有,再选择是否要安装 卸载 Nginx 删除除了配置文件以外的所有文件。 sudo apt-get remove nginx nginx-common 删除…

    Java 2023年6月14日
    078
  • 谷粒商城(无CURD代码)

    写在开头: 这份笔记仅仅记录了一些环境搭建以及基础篇中一些技术的使用,基本的CURD大部分没有记录,参考了很多网友的博客。若有冒犯,请联系我删除。参考文档见下: 本博客为自己随笔记…

    Java 2023年6月13日
    072
  • 老徐和阿珍的故事:强引用、软引用、弱引用、虚引用,傻傻分不清楚

    人物背景:老徐,男,本名徐福贵,从事Java相关研发工作多年,职场老油条,摸鱼小能手,虽然岁数不大但长的比较着急,人称老徐。据说之前炒某币败光了所有家产,甚至现在还有欠债。阿珍,女…

    Java 2023年6月7日
    089
  • springboot jpa—->总结一下遇到的问题

    Native Query throw exception dto code import lombok.Value; @Value public class IdsOnly { I…

    Java 2023年5月30日
    079
  • java基础学习-方法重载

    什么是重载? 让类以统一的方式处理不同数据类型的一种手段。就是多个方法名一样,但是参数个数/类型不同。 1、构造器方法重载 什么是构造器?java用构造器来保证我们创建的对象在使用…

    Java 2023年6月13日
    089
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球