男 女 java 枚举_java枚举类型知识点

本文详细介绍了Java枚举类型的使用方法及特性,包括枚举类的定义方式、构造器的特殊性、如何在switch语句中使用枚举,以及枚举类的遍历和常见方法。此外还提供了枚举类的具体应用案例。

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

原标题: java枚举类型知识点

679ba862a14e292c623cadfa0895b602.png

public enum Color{

RED,BLUE,BLACK,YELLOW,GREEN

}

enum很像特殊的class,实际上enum声明定义的类型就是一个类

这些类都是库类中Enum类的子类(Java.lang.Enum ),他们继承了Enum中许多有用的方法

枚举值都是public static final的,也就是常量,因此,枚举类中的枚举值应全部大写

枚举类型是class,在枚举类型中有构造器,方法和字段。但枚举的构造器有很大的不同:

1.构造器只是在构造枚举值的时候被调用

2.构造器私有private,不允许有public构造器

3.枚举可以在switch语句中使用

枚举特点

1.用enum定义枚举类默认继承了Java.lang.Enum类而不是继承了Object类。其中java.lang.Enum类实现了java.lang.Serializable和java.lang.Comparable两个接口

2.枚举类的构造函数只能使用private访问修饰符,如果省略了其构造器的访问控制符,则默认使用private修饰;

3.枚举类的所有实例必须在枚举类中显式列出,否则这个枚举类将永远都不能产生实例。列出这些实例时,系统会自动添加public static final修饰,无需程序员显式添加。

代码如下:

public enum Week { MON{ public String toLocaleString(){ return "星期一"; } },TUES{ public String toLocaleString(){ return "星期二"; } },WEB{ public String toLocaleString(){ return "星期三"; } },THUR{ public String toLocaleString(){ return "星期四"; } },FRI{ public String toLocaleString(){ return "星期五"; } },SAT{ public String toLocaleString(){ return "星期六"; } },SUN{ public String toLocaleString(){ return "星期日"; } }; public abstract String toLocaleString(); }

枚举的遍历

代码如下:

public class EnumTest { public static void main(String[] args){ for(Week w:Week.values()){ System.out.println(w); } } }

枚举的常用方法

int compareTo方法

String name()返回枚举实例的名称

int ordinal() 返回枚举值在枚举中的索引

String toString()返回枚举的实例名称 比name更常用

public static valueOf()

代码如下:

public class EnumTest { public static void main(String[] args){ Week day =Week.FRI; System.out.println(day);//FRI System.out.println(day.name());//FRI System.out.println(day.ordinal());//4 System.out.println(Week.valueOf("SUN").toLocaleString());//星期日 System.out.println(Week.values().length);//7 获取枚举长度 } }

枚举的构造函数

复制代码代码如下:

public enum Gender { MALE("男"),FEMALE("女"); private String name; private Gender(String name){ this.name =name; } public String getName(){ return this.name; } public String toString(){ String name = null; switch(this){ case MALE: name="男"; break; case FEMALE: name="女"; break; } return name; } }

枚举的综合应用示例:交通灯

c8e445784afac087831bbf9099ffbbeb.png

复制代码代码如下:

public enum Lamp { /*每个枚举元素各表示一个方向的控制灯*/ S2N("N2S","S2W",false),S2W("N2E","E2W",false),E2W("W2E","E2S",false),E2S("W2N","S2N",false), /*下面元素表示与上面的元素的相反方向的灯,它们的“相反方向灯”和“下一个灯”应忽略不计!*/ N2S(null,null,false),N2E(null,null,false),W2E(null,null,false),W2N(null,null,false), /*由南向东和由西向北等右拐弯的灯不受红绿灯的控制,所以,可以假想它们总是绿灯*/ S2E(null,null,true),E2N(null,null,true),N2W(null,null,true),W2S(null,null,true); private Lamp(String opposite,String next,boolean lighted){ this.opposite = opposite; this.next = next; this.lighted = lighted; } /*当前灯是否为绿*/ private boolean lighted; /*与当前灯同时为绿的对应方向*/ private String opposite; /*当前灯变红时下一个变绿的灯*/ private String next; public boolean isLighted(){ return lighted; } /** * 某个灯变绿时,它对应方向的灯也要变绿 */ public void light(){ this.lighted = true; if(opposite != null){ Lamp.valueOf(opposite).light(); } System.out.println(name() + " lamp is green,下面总共应该有6个方向能看到汽车穿过!"); } /** * 某个灯变红时,对应方向的灯也要变红,并且下一个方向的灯要变绿 * @return 下一个要变绿的灯 */ public Lamp blackOut(){ this.lighted = false; if(opposite != null){ Lamp.valueOf(opposite).blackOut(); } Lamp nextLamp= null; if(next != null){ nextLamp = Lamp.valueOf(next); System.out.println("绿灯从" + name() + "-------->切换为" + next); nextLamp.light(); } return nextLamp; } }返回搜狐,查看更多

责任编辑:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值