您现在的位置是:首页 > 正文

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

2024-04-01 01:30:17阅读 5

原标题: 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; } }返回搜狐,查看更多

责任编辑:

网站文章

  • qt ui设计:无法拖拽控件到设计界面

    环境是win10,qt 5.9.0,突然无法拖拽控件到设计界面进行可视化界面设计。 尝试过重新建立qt工程,无效。 通过重启电脑解决

    2024-04-01 01:30:12
  • localdate转date时区问题_Date和LocalDate互转

    一.简述Date对象表示特定的日期和时间,而LocalDate(Java8)对象只包含没有任何时间信息的日期。因此,如果我们只关心日期而不是时间信息,则可以在Date和LocalDate之间进行转换。...

    2024-04-01 01:30:04
  • 子网掩码、IP地址、网络号、主机号、广播地址的关系及理解(看这一篇就够了)

    子网掩码、IP地址、网络号、主机号、广播地址的关系及理解(看这一篇就够了)

    1.首先大题理解他们的关系如下: 当前使用的IP地址有4个字节(32bit)组成,即IPV4编码方式。每个IP地址包括两部分:网络号和主机号。当分配给主机号的二进制位越多,则能标识的主机数就越多,相应地能标识的网络数就越少,反之同理。 子网掩码的作用就是将某个IP地址划分成网络地址和主机地址两部分。给出一个IP地址,我们可以通过子网掩码确定这个IP地址的网络号和主机号。 ...

    2024-04-01 01:29:37
  • python项目打包成docker镜像并发布 热门推荐

    python项目打包成docker镜像并发布 热门推荐

    本文以django项目为例,演示docker镜像的制作过程。 开始之前做个必要的解释: 基础镜像:镜像中运行的项目或者启动的一些服务,都要在一个基础镜像之上才能运行这些服务,比如一个django项目或者mysql数据库等,都要在Linux操作系统之上来运行,所以打包我们自己的项目时,必须要有个基础镜像来当作我们项目运行的基础环境。 下面开始进入主题: 首先来看下目录结构: 在项目根目...

    2024-04-01 01:29:30
  • 结构体——小结

    结构体——小结

    一,结构体优点如下,(1)可以包含不同数据类型的一个结构体(2)相同的结构体变量是可以相互赋值的(3)节省内存空间 注意:结构体声明的时候本身不占用任何内存空间,只有当你用你定义的结构体类型定义结构体变量的时候计算机才会分配内存。 直接内存操作避免了栈空间开辟结构变量空间的需求,节省内存。(4)效率高 根据反汇编的思想,结构体在栈中是离散的,而数组在...

    2024-04-01 01:29:25
  • CRMEB单商户v4.x及CRMEB Pro系统验证码不显示问题解决

    CRMEB单商户v4.x及CRMEB Pro系统验证码不显示问题解决

    问题: network报错信息: {"status":400,"msg":"include(): the code loader version is...

    2024-04-01 01:28:59
  • 深度学习课程设计——波士顿房价预测

    深度学习课程设计——波士顿房价预测

    基于神经网络回归的波士顿房价预测 摘 要 神经网络是从信息处理角度对人脑神经元网络进行抽象,建立某种模型,按不同的连接方式组成不同的网络。本文以波士顿房价这一经典数据集为基础,该数据集包含了住宅用地所...

    2024-04-01 01:28:50
  • Docker 环境搭建

    Docker 环境搭建

    建议更换版本:3-management。#进入到容器内部执行插件激活。

    2024-04-01 01:28:42
  • CSS的苹果兼容

    CSS的苹果兼容

    2019独角兽企业重金招聘Python工程师标准>>> ...

    2024-04-01 01:28:19
  • 万用表测量二极管

    万用表测量二极管

    测量二极管正负 一个正常的二极管,用指针表的电阻档测,若处于导通状态,是不是黑表笔接触的一级为二极管的正极,红表笔为负极!用数字表测,若处于导通状态,结论正好相反(红表笔为正极)!是这样的吗 首先要知道: 用指针式万用表测量二极管得出的是二极管的正反向电阻。 用数字式万用表测量二极管得出的是二极管的导通压降。 另外还要知道: 指针式万用表的红、黑表笔在表内是通过元器件分别连接到工作电池的负、

    2024-04-01 01:28:11