【Java开发指南 | 第三十篇】Java 枚举(enum)

读者可订阅专栏:Java开发指南 |【CSDN@秋说】

在这里插入图片描述

Java 枚举(enum)

枚举(Enumeration)是一种特殊的数据类型,用于表示一组具名的常量集合,例如表示星期几、月份、颜色等。

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

枚举类的声明

在类外声明枚举类:

enum color{
	orange,green,grey,pink,blue;
}
public class Ice{
    public static void main(String[] args) {
    	color i=color.blue;
    	System.out.println(i);
    }
}

在这里插入图片描述

在内部类中声明枚举类:

public class Ice{
	enum color{
		orange,green,grey,pink,blue;
	}
    public static void main(String[] args) {
    	color i=color.blue;
    	System.out.println(i);
    }
}

在这里插入图片描述

迭代枚举元素

可以使用 for 语句来迭代枚举元素:

public class Ice{
	enum color{
		orange,green,grey,pink,blue;
	}
    public static void main(String[] args) {
    	for(color i:color.values())
    	System.out.println(i);
    }
}

在这里插入图片描述

在 switch 中使用枚举类

枚举类常应用于 switch 语句中:

public class Ice{
	enum color{
		orange,green,grey,pink,blue;
	}
    public static void main(String[] args) {
    	color ice=color.blue;
    	switch(ice)
    	{
    	case orange:
    		System.out.println("橙色");
    		break;
    	case green:
    		System.out.println("绿色");
    		break;
    	case blue:
    		System.out.println("蓝色");
    		break;
    	default:
    		break;
    	}
    }
}

在这里插入图片描述

values(), ordinal() 和 valueOf() 方法

在应用枚举类时,常使用values(), ordinal() 和 valueOf() 三种方法。

1、values() 返回枚举类中所有的值。

2、ordinal()方法可以找到每个枚举常量的索引,就像数组索引一样。

3、valueOf()方法返回指定字符串值的枚举常量。

public class Ice{
	enum color{
		orange,green,grey,pink,blue;
	}
	
    public static void main(String[] args) {
    	//调用 values()
    	color[] ice = color.values();
    	
    	//迭代枚举
    	for(color col:ice)
    	{
    		//查看索引
    		System.out.println(col+" at index "+col.ordinal());
    	}
    	
    	//返回枚举常量
    	System.out.println(color.valueOf("blue"));
    	//若不存在,则报错 IllegalArgumentException 
    	System.out.println(color.valueOf("red"));
    }
}

在这里插入图片描述

枚举类成员

枚举跟普通类一样可以用自己的变量、方法和构造函数。

其中构造函数只能使用 private 访问修饰符,所以外部无法调用,因此只能通过枚举定义的常量来访问。

示例如下:

enum Direction {
    NORTH("North"),
    EAST("East"),
    SOUTH("South"),
    WEST("West");

    private String name;

    // 构造函数是私有的,只能在枚举内部使用
    private Direction(String name) {
        this.name = name;
    }

    // 获取方向名称
    public String getName() {
        return name;
    }
}

public class Ice {
    public static void main(String[] args) {
        Direction north = Direction.NORTH;
        System.out.println("Name: " + north.getName());
    }
}

在这里插入图片描述

枚举既可以包含具体方法,也可以包含抽象方法。 如果枚举类具有抽象方法,则枚举类的每个实例都必须实现它。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋说

感谢打赏,祝你平安喜乐。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值