java枚举(enum)使用详解

2023-05-16

文章目录

  • 前言
  • 一、枚举类型定义
  • 二、访问成员
  • 三、遍历
  • 四、在switch()中使用枚举
  • 五、方法
    • 1.内置方法
      • 1.1 ordinal()用于返回成员的索引
      • 1.2 compareTo()用于比较枚举类型中两个成员的索引值
      • 1.3 valueOf()用于返回枚举类型中指定字符串对应的枚举成员,如果不存在则抛出异常
      • 1.4 values()方法以数组方式返回枚举类型中的成员
    • 2.构造方法
    • 3.自定义方法
    • 4.重写方法
  • 总结


前言

Java中的枚举是一种特殊的类,用于存放一组常量,比如一年分为四个季节、车分为机动车和非机动车等。


一、枚举类型定义

枚举类型使用关键字enum进行修饰,定义一组常量,定义方式如下:

enum famulei{
        /**
         * famulei:伐木累
         */
        ZHANGSAN,LISI,WANGWU
    }

定义一个名为famulei的枚举类型,其中有三个成员,ZHANGSAN,LISI,WANGWU,枚举成员一般使用大写。

二、访问成员

访问枚举类的成员可以直接通过枚举类名对成员进行访问:

System.out.println(famulei.ZHANGSAN);

输出结果:
在这里插入图片描述
也可以通过使用valus(),使用索引进行访问:

System.out.println(famulei.values()[1]);

输出结果:
在这里插入图片描述

三、遍历

枚举类型的遍历可以使用增强型for循环进行遍历,如下:

for (famulei f : famulei.values()) {
            System.out.println(f);
        }

输出结果:
在这里插入图片描述

四、在switch()中使用枚举

枚举类中的常量可以在switch()中使用,例如:

package learning;
import java.util.Arrays;
import java.util.EnumMap;

/**
 * @ClassName: MyEnum
 * @Description: Enum learning
 * @author: Lxy
 * @date: 2021/9/23 11:53
 */

public class MyEnum {
    enum famulei {
        /**
         * famulei:伐木累
         */
        ZHANGSAN, LISI, WANGWU;
    }
    public famulei NameChangedEvent(){
        famulei fml = famulei.LISI;
        switch (fml){
            case ZHANGSAN:
                fml= famulei.LISI;
                break;
            case LISI:
                fml=famulei.WANGWU;
                break;
            case WANGWU:
                fml=famulei.ZHANGSAN;
                break;
            default:
                System.out.println("Error!");
        }
        return fml;
    }

    public static void main(String[] args) {
        MyEnum myEnum =new MyEnum();
        System.out.println(myEnum.NameChangedEvent());
    }
}

输出结果:
在这里插入图片描述

五、方法

1.内置方法

Java中枚举类型还提供了很多其他的方法,比如ordinal()、compareTo()、valueOf()以及上述提到的values()等。

1.1 ordinal()用于返回成员的索引

//返回成员索引
System.out.println(famulei.LISI.ordinal());

输出结果:
在这里插入图片描述

1.2 compareTo()用于比较枚举类型中两个成员的索引值

//成员索引成员索引
System.out.println(famulei.ZHANGSAN.compareTo(famulei.WANGWU));

输出结果:
在这里插入图片描述

1.3 valueOf()用于返回枚举类型中指定字符串对应的枚举成员,如果不存在则抛出异常

System.out.println("字符串ZHANGSAN对应的枚举成员:"+famulei.valueOf("ZHANGSAN"));

输出结果:
在这里插入图片描述
但是,如果枚举类型中不存在指定的字符串对应的成员,会抛出IllegalArgumentException异常:

System.out.println("字符串XIAOLIU对应的枚举成员:"+famulei.valueOf("XIAOLIU"));

在这里插入图片描述

1.4 values()方法以数组方式返回枚举类型中的成员

System.out.println("无格式化输出:"+famulei.values());
 System.out.println("格式化输出:"+ Arrays.toString(famulei.values()));

输出结果:
在这里插入图片描述
该方法返回了数组的地址,可以使用Arrays.toString()方法进行格式化。

2.构造方法

枚举类型既然是一种特殊的类,那么就有自己的构造方法,使用构造方法可以对枚举类的成员进行属性(也许叫属性不太合适)说明。同时能够实现对成员属性的访问。

package learning;
import java.util.Arrays;
import java.util.EnumMap;

/**
 * @ClassName: MyEnum
 * @Description: Enum learning
 * @author: Lxy
 * @date: 2021/9/23 11:53
 */

public class MyEnum {
    enum famulei {
        /**
         * famulei:伐木累
         */
        ZHANGSAN("male",20), LISI("male",25), WANGWU("female",30);
        private String sex;
        private int age;
        //构造方法
        famulei(String sex, int age) {
            this.sex=sex;
            this.age=age;
        }
    }

    public static void main(String[] args) {
        System.out.println("LISI's age:"+famulei.LISI.age);
        System.out.println("ZHANGSAN's sex:"+famulei.ZHANGSAN.sex);
    }
}

输出结果:
在这里插入图片描述

3.自定义方法

可通过自定义方法修改成员属性,例如:

package learning;
import java.util.Arrays;
import java.util.EnumMap;

/**
 * @ClassName: MyEnum
 * @Description: Enum learning
 * @author: Lxy
 * @date: 2021/9/23 11:53
 */

public class MyEnum {
    enum famulei {
        /**
         * famulei:伐木累
         */
        ZHANGSAN("male",20), LISI("male",25), WANGWU("female",30);
        private String sex;
        private int age;
        //构造方法
        famulei(String sex, int age) {
            this.sex=sex;
            this.age=age;
        }

        //自定义方法
        public void setSex(String sex){
            this.sex=sex;
        }
        public void setAge(int age){
            this.age=age;
        }
    }

    public static void main(String[] args) {
        System.out.println("ZHANGSAN's sex:"+famulei.ZHANGSAN.sex);
        System.out.println("ZHANGSAN's age:"+famulei.ZHANGSAN.age);
        famulei.ZHANGSAN.setSex("female");
        famulei.ZHANGSAN.setAge(35);
        System.out.println("ZHANGSAN's sex:"+famulei.ZHANGSAN.sex);
        System.out.println("ZHANGSAN's age:"+famulei.ZHANGSAN.age);
    }
}

输出结果:
在这里插入图片描述


4.重写方法

上述Arrays.toString()方法输出枚举类型中的成员,可以对其进行重写,输出每一个成员的属性,例如:

package learning;
import java.util.Arrays;
import java.util.EnumMap;

/**
 * @ClassName: MyEnum
 * @Description: Enum learning
 * @author: Lxy
 * @date: 2021/9/23 11:53
 */

public class MyEnum {
    enum famulei {
        /**
         * famulei:伐木累
         */
        ZHANGSAN("male",20), LISI("male",25), WANGWU("female",30);
        private String sex;
        private int age;
        //构造方法
        famulei(String sex, int age) {
            this.sex=sex;
            this.age=age;
        }

        //自定义方法
        public void setSex(String sex){
            this.sex=sex;
        }
        public void setAge(int age){
            this.age=age;
        }
        //重写方法
        @Override
        public String toString(){
            return this.sex+"-"+this.age;
        }

    }

    public static void main(String[] args) {
        System.out.println(Arrays.toString(famulei.values()));
    }
}

输出结果:
在这里插入图片描述

总结

本文主要简单介绍Java中枚举类型的一些简单使用,此外,枚举类型也可用于实现接口等。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java枚举(enum)使用详解 的相关文章

随机推荐

  • 【软件使用Ubuntu】开机时kernel: ACPI BIOS Error (bug)

    1 journalctl x 显示开机启动问题 2 解决 sudo gedit etc default grub xff08 打开文档 xff09 GRUB CMDLINE LINUX DEFAULT 61 quiet splash log
  • Linux /etc/profile.d/*.sh配置环境变量

    文章目录 原理示例 原理 etc profile文件中有如下一段脚本 xff1a span class token keyword if span span class token punctuation span d etc profil
  • 腾讯云服务器-公网IP与域名绑定

    接着上篇 xff0c 腾讯云服务器Ubuntu 配置mysql nginx nodejs cycong108的博客 CSDN博客 现在 xff0c 云服务器已经配置好了 xff0c 其中主要是安装了Nginx xff0c 当在浏览器访问公网
  • nextcloud私有云搭建

    Nextcloud 是一款自由 开源 的类 Dropbox 软件 xff0c 由 ownCloud 分支演化形成 它使用 PHP 和 JavaScript 编写 xff0c 支持多种数据库系统 xff0c 比如 MySQL MariaDB
  • 深度学习环境配置 ubuntu安装CUDA10.2失败!

    深度学习环境配置 ubuntu安装CUDA10 2失败 xff01 按照网上教程安装CUDA10 1 或 CUDA10 2时候 xff0c 即执行官方的命令的时候 root 64 6c000e89a184 sh cuda 10 2 89 4
  • Ubuntu构建ARM交叉编译器

    本文将在一个纯净的Ubuntu 22 04 LTS 下构建ARM交叉编译器 GCC版本为11 1 0 必需的依赖项 xff1a span class token function sudo span span class token fun
  • git配置用户名和邮箱

    局部配置 xff0c 针对具体项目 xff0c 在项目目录下运行命令 xff1a git config user span class token punctuation span name span class token string
  • pve cpu监测 温度功耗监测软件

    https linux cn article 10467 1 html 强烈建议python3 pip3
  • 远程桌面Xrdp登录蓝屏问题

    先卸载了自己之前安装的xrdp和tightvncserver sudo apt get purge xrdp sudo apt get purge tightvncserver sudo apt get install xserver xo
  • 音频编码原理

    一 音频有损压缩技术 消除冗余信息 xff08 有损压缩 xff0c 消除冗余信息后 xff0c 无法还原出原声 xff09 无损压缩 xff08 消除冗余信息后仍能够还原出原声 xff09 音频压缩技术是在保证信号在听觉范围不产生失真的前
  • 关于C语言中的左移与右移

    总结 1 左移时总是移位和补零 无论是有符号类型数据还是无符号类型数据都统称为逻辑左移 2 右移时无符号数是移位和补零 xff0c 此时称为逻辑右移 3 右移时而有符号数大多数情况下是移位和补最左边的位 xff08 也就是补最高有效位 xf
  • win10安装visual studio C++ build tools 提示安装包丢失或毁坏(安装包)

    是不是这个问题 xff1f 网上搜说是证书的问题 xff0c 但我自己一查证书没问题 xff0c 网上又说要fq xff0c 很多都是浏览器fq xff0c 但安装不走浏览器 如果你想查看证书 xff0c 以及后续问题 xff0c 参考文章
  • 安装Node.js(Windows 二进制文件 (.zip))记录

    本次笔者在本地电脑安装Node js xff0c 搭建开发环境 因遇到了一些问题 xff0c 所以 xff0c 留下记录 选择安装官网的LTS版本 xff1a 解压后 xff0c 笔者重命名文件夹名称为 nodejs xff0c 再在目录中
  • win10+VS2017+Cuda10.0环境配置详解

    主要介绍了win10 43 VS2017 43 Cuda10 0环境配置详解 xff0c 文中通过示例代码介绍的非常详细 xff0c 对大家的学习或者工作具有一定的参考学习价值 xff0c 需要的朋友们下面随着小编来一起学习学习吧 文件 x
  • HC06蓝牙模块的手机APP源码

    支持HC05 HC06等蓝牙串口模块 蓝牙串口助手APP下载 支持自定义按钮 适合电子调试 基于E4A易安卓编写 源码开放 大家可以自己制作app 业余制作 界面比较丑 只确保功能尽可能正常 介 HC06蓝牙模块的手机APP源码文件 xff
  • 解决windows 安装wsl的部分问题

    解决windows 安装wsl的部分问题 方法一 修改DNS方法二 windows官网1 启用适用于 Linux 的 Windows 子系统2 启用虚拟机功能3 将 WSL 2 设置为默认版本4 更新wsl内核5 列出发行版本6 安装 方法
  • python中字符串的操作及练习题

    1 字符串的特性 索引 In 1 s 61 39 hello 39 In 2 print s 0 h In 3 print s 1 e 切片 In
  • git命令

    git 一 git命令二 git工作流程三 开发流程四 上传私有化项目本地有更改 xff0c git pull拉取代码成功 xff0c 但是代码没有拉下来5 2 xff1a 将本地分支推送到云端分支 一 git命令 二 git工作流程 1
  • Python截取选择区域图片//2021-1-28

    前言 xff1a 最先使用这个功能的初衷是因为利用Python的OCR库 tesseract xff0c 把图片转换后得到的数据不好处理 xff0c 故为了减少不好处理部分的数据 xff0c 减少转化图片的范围 xff0c 所以先通过截图
  • java枚举(enum)使用详解

    文章目录 前言一 枚举类型定义二 访问成员三 遍历四 在switch xff08 xff09 中使用枚举五 方法1 内置方法1 1 ordinal 用于返回成员的索引1 2 compareTo 用于比较枚举类型中两个成员的索引值1 3 va