首页 > 其他分享 >枚举

枚举

时间:2023-07-24 17:00:50浏览次数:21  
标签:MyWeek name public 枚举 static final

枚举

枚举(enumeration,enum)是一组常量的集合,可以理解为一种特殊的类,里面只包含一组有限的特定的对象。

这组对象的特点,有限个值,只读,不需要修改

两种实现方式

1)使用自定义类实现枚举

2)使用enum关键字实现枚举

// 以一周7天为例
public class Test {
    public static void main(String[] args) {
        System.out.println(MyWeek.MONDAY);
        System.out.println(MyWeek.TUESDAY);
        System.out.println(MyWeek.WEDNESDAY);
        System.out.println(MyWeek.THURSDAY);
        System.out.println(MyWeek.FRIDAY);
        System.out.println(MyWeek.SATURDAY);
        System.out.println(MyWeek.SUNDAY);
        System.out.println("++++++++++++++++++++++++");
        for (Week value : Week.values()){
            System.out.println(value.getName());
        }
    }
}

// 使用自定义类实现枚举
class MyWeek{
    private String name;
    public final static MyWeek MONDAY = new MyWeek("星期一");
    public final static MyWeek TUESDAY = new MyWeek("星期二");
    public final static MyWeek WEDNESDAY = new MyWeek("星期三");
    public final static MyWeek THURSDAY = new MyWeek("星期四");
    public final static MyWeek FRIDAY = new MyWeek("星期五");
    public final static MyWeek SATURDAY = new MyWeek("星期六");
    public final static MyWeek SUNDAY = new MyWeek("星期日");
    private MyWeek(){
    }
    private MyWeek(String name){
        this.name = name;
    }
    public String getName(){
        return this.name;
    }
    @Override
    public String toString() {
        return this.name;
    }
}
//使用enum关键字实现枚举
enum Week{
    MONDAY("星期一"),TUESDAY("星期二"),WEDNESDAY("星期三"), 
    THURSDAY("星期四"),FRIDAY("星期五"),SATURDAY("星期六"),
    SUNDAY("星期日");
    private String name;
    private Week(String name){
        this.name = name;
    }
    public String getName(){
        return this.name;
    }
}

枚举的注意事项

1)构造器私有化

2)本类内部创建一组对象

3)对外暴露对象,让外界可以进行访问

4)提供get方法,不提供set方法

5)当我们使用enum关键字时,默认会继承Enum类,而且是一个final类

6)传统方式被简化

// 简化前
public final static MyWeek MONDAY = new MyWeek("星期一");
// 简化后
MONDAY("星期一");

7)当有多个枚举对象时,使用,隔开,最后;结尾

8)枚举对象必须放在枚举类的首行

说明

1)枚举对象通常只读,不需要提供set方法

2)对枚举对象或属性使用final static共同修饰,可以进行底层优化

3)枚举对象名通常全部使用大写字母,常量的命名规范

4)枚举对线可以有多个方法和属性

Enum类

当我们使用enum关键字时,默认会继承Enum类,其有很多常用的方法

1)toString()返回对象的属性信息,子类可以重写

2)name()返回当前对象名,子类不能重写

3)ordinal()返回当前对象的位置号,默认从0开始

4)values()返回当前枚举类中的所有常量

5)valueOf()将字符串转换成枚举对象,须为已有的常量名,否则报错

6)compareTo()将两个枚举常量的位置号进行比较

A.compareTo(B);
A的位置号-B的位置号

其他可见Enum类中源码自行进行分析

标签:MyWeek,name,public,枚举,static,final
From: https://blog.51cto.com/u_16188762/6836833

相关文章

  • jpa中枚举类型保存和查询
    1,存储枚举字段时,保存在数据库中的值默认情况使用枚举类型的ordinal值,该值是枚举值定义顺序,从0,1,2。。。依次类推@Enumerated(EnumType.ORDINAL)privateSignUpStatusstatus;使用枚举值名称@Enumerated(EnumType.STRING)privateSignUpStatusstatus;2,使用nativesql查询......
  • 结构体,联合体,枚举
    结构体结构体是不同类型的值的集合,用struct关键字声明,我们可以用这个定义好的结构体创建多个学生对象,并且可以初始化他们各自的成员信息。最后我们通过.操作符访问成员的相应属性。#include<stdio.h>//定义一个学生类型的结构体structStu{ //学生姓名 charname[20......
  • abc090d <枚举计数>
    题目D-RemainderReminder代码Code//https://atcoder.jp/contests/abc090/tasks/arc091_b#include<iostream>#include<algorithm>#include<vector>#include<cstring>usingnamespacestd;usingLL=longlong;usingPII=pair<in......
  • 枚举
    publicenumSea{id,age,name}Seas=Sea.age;Seas1=Sea.id;vars2=(Sea)2;//nameConsole.WriteLine($"{s},{(int)s},{(int)s1},{s2}&q......
  • java规范 枚举包名
    Java规范:枚举包名在Java编程中,枚举(Enumeration)是一种特殊的数据类型,它可以定义一组常量。在实际开发中,我们常常需要为枚举类型定义一个合适的包名,以便更好地组织和管理代码。为什么需要为枚举定义包名?在Java中,包(Package)是一种用于组织类和接口的机制。通过使用包,我们可以将相关......
  • abc073d <Floyed + 枚举排列>
    D-joisino'stravel//https://atcoder.jp/contests/abc073/tasks/abc073_d//Floyed+枚举排列#include<iostream>#include<algorithm>#include<vector>#include<cstring>usingnamespacestd;usingLL=longlong;constintN=......
  • Java基础——枚举enum
    一、什么是枚举枚举,顾名思义就是一个个的列出来,和类以及接口是同一个级别的类型,本质就是类(final类)。它用于声明一组命名的常数的集合,当一个变量有几种可能的取值时,可以将它定义为枚举类型。Java中由关键字enum来定义一个枚举类型。 定义一个简单的枚举:这个枚举定义了两个常量......
  • 枚举类
    使用场景:希望根据某个key得到value以及更多信息importlombok.AllArgsConstructor;importlombok.Getter;importlombok.NoArgsConstructor;/***@AuthorNoDreamJava*@Date2023-7-510:57*@Version1.0*/@AllArgsConstructor@NoArgsConstructor@Getterpubl......
  • FWT小常数枚举方法
    其实是一类要按位变换的问题。不妨假设是二进制的,别的进制类似。voidF(int*a){ for(intw=1;(w<<1)<=(1<<k);w<<=1) for(ints=0;s<(1<<k);s+=(w<<1)) for(intt=0;t<w;++t)a[s+t+w]+=a[s+t];}具体原理未知。......
  • java使用枚举消除 if/else
    有这样一个判断场景。if("dog".equals(animalType)){System.out.println("吃骨头");}elseif("cat".equals(animalType)){System.out.println("吃鱼干");}elseif("sheep"){System.out.println("吃草");......