Java 4:枚举

本文深入探讨了枚举类的基本概念及用法,包括如何定义枚举类型、添加构造函数和成员变量,以及如何通过静态常量的方式理解枚举类。此外,还介绍了枚举类与普通类的区别,如为何不能使用equals方法比较枚举值,以及枚举类型如何继承自Enum类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

枚举类本身是“类”,不能作为局部变量声明,但是定义时又像简单的变量

enum Size{a,b,c}
enum Age{d,e,f};
一般 "class 类"时,没有分号,而普通语句有分号,枚举倒是奇怪,加不加都不报错。

枚举类括号里的不是变量,而是类的实例,名称和普通变量一样,不能由数字开头

Object的equals()方法的本意为确定两个对象的引用是否相同,在String,Date,File等方法中被重写,表达为判断 类型+内容是否相等

判断两个枚举类型的值是否相等,不能使用equal,而要用“==”(这个后面看了Object和类部分,再回头思考一下)


enum Size{
	SAMLL(),MID(),BIG()
}
这样也可以,这三个都是Size类的静态常量
根本上等同于:
class Size{
	public static final Size SAMLL=new Size();
	public static fianl Size MID=new Size();
	public static final Size BIG=new Size();
}

可以给枚举类添加构造函数、变量
public static void main(String[] args) throws IOException {
	Size s=Size.BIG;		
}
enum Size{
	SAMLL,MID,BIG;
	Size(){
		System.out.println(w);
	}
	public int w=1;
}
在定义Size s时,构造函数执行了3次,(输出3个1),证明确实和静态变量一样

可以自定义构造函数:
public class JavaBase1 {

	public static void main(String[] args) throws IOException {
		Size s=Size.BIG;	
		s.print();
	}
}
enum Size{
	SAMLL(1),MID(2),BIG(3);
	Size(int i){
		w=i;
	}
	public int w=1;
	public void print(){
		System.out.println(w);
	}
}
此时没有了默认构造函数,SAMLL这些静态对象必须与构造函数一致,也可以定义多个构造函数,3个静态对象采取不同的构造函数。

所有枚举类型是Enum的子类,所以Enum s= Size.SAMLL也可以
Size[] s=Size.values(); 返回所有枚举类对象数组
在编译后,无法再实例化其他枚举类对象,当做几个固定的常量使用

Sysout时会自动调用toString方法(枚举转String),而它的逆方法:String,转枚举:Size s=Enum.valueOf(Size.class,"SMALL");
Size s=Size.BIG;
System.out.println(s.ordinal());//返回BIG的位置,从0算起,是2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值