Java学习26--枚举类

enum枚举

Java 枚举是一个特殊的类,一般表示一组常量,比如一年的 4 个季节,一年的 12 个月份,一个星期的 7 天,方向有东南西北等。

Java 枚举类使用 enum 关键字来定义,各个常量使用逗号 , 来分割。

enum Color 
{ 
    RED, GREEN, BLUE; 

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

enum枚举类,即一组固定的常量。枚举指的是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的集合。例如表示星期的SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY、SATURDAY就是一个枚举,可以定义一个枚举类型叫做DayOfWeek。定义方法如下:

public enum DayOfWeek {  
    SUNDAY,  
    MONDAY, 
    TUESDAY,  
    WEDNESDAY,  
    THURSDAY,  
    FRIDAY,  
    SATURDAY
}  

一个简单的程序,一年四季(比较懒惰只写了两季),注意定义enum类时只允许输出,不允许输入所以没有设置set类(同时写了final关键字的variable也不能建立getter结构)。

package Enum;

public class test {
    enum yearseason {
        //必须要在枚举类开头声明多个对象,对象之间使用,隔开
        SPRING("Spring", "the start of the year"),
        SUMMER("Summer", "hot season of the year");

        //声明当前对象的实例变量,使用private final修饰
        private final String pname;
        private final String pdetail;

        //私有化构造器
        private yearseason(String sname, String sdetail) {

            this.pname = sname;
            this.pdetail = sdetail;
        }

        public String getPname() {
            return pname;
        }

        public String getPdetail() {
            return pdetail;
        }

        public String toString(){
            return "season name is "+pname+";season detail is "+pdetail;
        }

    }


    public static void main(String[] args) {
        //yearseason WINTER = new yearseason("WINTER","cold weather of the year");//enum里面没有设置set结构所以不能写入哦
        System.out.println(yearseason.SPRING.getPname()+":"+yearseason.SPRING.getPdetail());
        System.out.println(yearseason.SUMMER.toString());

    }
}

程序输出:

Spring:the start of the year
season name is Summer;season detail is hot season of the year

Process finished with exit code 0

values () 方法的使用:

依次输出每个枚举类型时候可以这样

 public static void main(String[] args) {
        //enum类的名称+[]+自定义的数组名称 = enum类的名称.values()
		//即可返回数组中的所有值
        DayOfWeek [] x_total=DayOfWeek.values();

        //for(每个元素:数组名){XXX}增强for循环,能快速输出一个数组的内容
		
	
        for(DayOfWeek h_each:x_total){
		 //for(DayOfWeek h_each:DayOfWeek.values())
	 //当然这样写也是一模一样的,它相当于上面两行合并了
            System.out.println("today is "+h_each);
        }
    }

返回值

today is SUNDAY
today is MONDAY
today is TUESDAY
today is WEDNESDAY
today is THURSDAY
today is FRIDAY
today is SATURDAY

ordinal ()方法的使用

(返回所寻元素数组下标,返回值int)

enum DayOfWeek{
    SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY
}
public class my_enum{
        public static void main(String[] args) {
            // 获取WEDNESDAY枚举常量的位置,这里应是【3】下标位置
            int ord = DayOfWeek.WEDNESDAY.ordinal();
            System.out.println("WEDNESDAY的位置(ordinal): " + ord);
            // 输出: WEDNESDAY的位置(ordinal): 3
        }
}


WEDNESDAY的位置(ordinal): 3

valueOf ()方法的使用

valueOf() 方法也是 Enum 类的一个静态方法,它用于将给定的字符串名称转换为对应的枚举常量。
如果字符串名称与枚举类型中某个常量的名称匹配,则 valueOf() 方法返回该常量;否则,它将抛出一个错误 IllegalArgumentException。

 enum DayOfWeek{
    SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY
}
public class my_enum{
    public static void main(String[] args) {

        System.out.println(DayOfWeek.valueOf("TUESDAY"));
        System.out.println("=========>");
        System.out.println(DayOfWeek.valueOf("666"));
    }
}
 

结果

TUESDAY
=========>
Exception in thread "main" java.lang.IllegalArgumentException: No enum constant exception.demo02.DayOfWeek.666
	at java.base/java.lang.Enum.valueOf(Enum.java:274)
	at exception.demo02.DayOfWeek.valueOf(my_enum.java:73)
	at exception.demo02.my_enum.main(my_enum.java:81)

Process finished with exit code 1

  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值