HelloCoder HelloCoder
首页
《Java小白求职之路》
《小白学Java》
计算机毕设
  • 一些免费计算机资源
  • 脚手架工具
  • 《从0到1学习Java多线程》
  • 《从0到1搭建服务器》
随笔
关于作者
首页
《Java小白求职之路》
《小白学Java》
计算机毕设
  • 一些免费计算机资源
  • 脚手架工具
  • 《从0到1学习Java多线程》
  • 《从0到1搭建服务器》
随笔
关于作者
  • 《PureJavaCoderRoad》

    • 导读

    • Java基础

      • Java入门

      • Java语法

      • Java流程控制

      • 面向对象

        • 1、方法
        • 2、静态字段和静态方法
        • 3、继承
        • 4、重载和重写
        • 5、多态
        • 6、抽象类
        • 7、接口
        • 8、值传递和引用传递
        • 9、枚举
        • Head-Java对象的理解
      • 异常处理

    • Java进阶

    • Java高阶

    • 开发辅助工具

    • 计算机网络

    • 数据库

    • JavaEE

    • 中间件

    • 架构

    • 建议

  • PureJavaCoderRoad
  • Java基础
  • 面向对象
#枚举
码农阿雨
2022-05-26
目录

9、枚举

# 枚举(enum)

Java 枚举是一个特殊的类,它可以用来表示一组常量。

枚举使用enum表示

语法:

public enum Season {
    SPRING, AUTUMN, SUMMER, WINTER
}

枚举类Season 表示两个季节的常量。

使用枚举:

class Test{
    public static void main(String[] args) {
        Season season = Season.SPRING;
        System.out.println(season);
    }
}

输出:

SPRING

可以看到枚举的使用 是 Season season = Season.SPRING;,而不是 new


之前说到static也可以表示一个常态变量:

public class Season {
   public static final  String = "SPRING";
}

那枚举和static变量有什么区别呢?

枚举类编译后默认为final class,而且枚举常量不会占用对象的存储空间,编译后全都是常量,枚举表示了在定义好的集合里匹配。

而且还有一个好处:

eg:

public enum Season {
    SPRING(1, "春天"), SUMMER(3, "夏天"), AUTUMN(5, "秋天"), WINTER(9, "冬天");

    private int index;
    private String name;
    Season(int index, String name) {
        this.index = index;
        this.name = name;
    }
}

枚举类可以绑定多个值,还可以有构造方法。

有点像我们平时创建一般实体类,就是不能实例化这个枚举类。

# 枚举类的API:

  • values() 返回枚举类中所有的值。
  • ordinal()方法可以找到每个枚举常量的索引,就像数组索引一样。
  • valueOf()方法返回指定字符串值的枚举常量。

eg:

public enum Season {
    SPRING(1, "春天"), SUMMER(3, "夏天"), AUTUMN(5, "秋天"), WINTER(9, "冬天");

    private int index;
    private String name;

    Season(int index, String name) {
        this.index = index;
        this.name = name;
    }


    public int getIndex() {
        return index;
    }

    public String getName() {
        return name;
    }

    @Override
    public String toString() {
        return "索引:" + getIndex() + ",值:" + getName();
    }
}

class Test {
    public static void main(String[] args) {
        for (Season season : Season.values()) {
            System.out.println(season);
        }
	    System.out.println("------------------");
        System.out.println(Season.valueOf("WINTER"));
    }
}

输出:

索引:1,值:春天
索引:3,值:夏天
索引:5,值:秋天
索引:9,值:冬天
------------------
索引:9,值:冬天

System.out.println(season); 默认省略了toString()方法,其实就是System.out.println(season.toString());

枚举也是类,所有的父类都是Object,toString() 是Object的API,这里重写了toString()方法,所以会调用子类的方法。

阅读全文
×

(为防止恶意爬虫)
扫码或搜索:HelloCoder
发送:290992
即可永久解锁本站全部文章

解锁
#枚举
上次更新: 2025-02-21 06:04:57
最近更新
01
《LeetCode 101》
02-21
02
IDEA、Golang、Pycharm破解安装
02-21
03
《LeetCode CookBook》
02-21
更多文章>
Theme by Vdoing | Copyright © 2020-2025 码农阿雨
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式