网站首页 > java教程 正文
在Java中,枚举类型是一种特殊的数据类型。枚举类型可以让你在代码中使用更有意义的符号来表示数据,提高代码的可读性和可维护性。
枚举类型的定义:使用enum关键字来定义枚举类型。
例如:
enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
枚举常量
枚举类型中的每个值称为一个枚举常量。在上面的例子中,MONDAY、TUESDAY等都是Day枚举类型的常量。
枚举方法:
枚举类型可以包含方法。你可以为枚举类型定义构造函数、成员方法和静态方法。例如:
enum Day {
MONDAY("星期一"), TUESDAY("星期二"), WEDNESDAY("星期三"),
THURSDAY("星期四"), FRIDAY("星期五"), SATURDAY("星期六"), SUNDAY("星期日");
private String chineseName;
private Day(String chineseName) {
this.chineseName = chineseName;
}
public String getChineseName() {
return chineseName;
}
}
使用枚举类型:
可以使用枚举类型的常量来表示特定的值。例如:
Day today = Day.MONDAY;
System.out.println(today); // 输出:MONDAY System.out.println(today.getChineseName()); // 输出:星期一
枚举类型的比较:
枚举类型的比较使用==运算符进行,而不是使用equals()方法。例如:
Day day1 = Day.MONDAY;
Day day2 = Day.MONDAY;
System.out.println(day1 == day2); // 输出:true
枚举类型的遍历:
可以使用values()方法来获取枚举类型的所有常量,并使用foreach循环进行遍历。例如:
for (Day day : Day.values())
{
System.out.println(day);
}
MONDAY("星期一"), TUESDAY("星期二"), WEDNESDAY("星期三")...的含义?
代码定义了一个枚举类型Day,其中包含了七个枚举常量:MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY、SATURDAY和SUNDAY。每个枚举常量都有一个与之关联的中文名作为参数,用于表示星期几的中文名称。
例如,MONDAY枚举常量的中文名是"星期一",TUESDAY的中文名是"星期二",以此类推。
通过为枚举常量提供中文名,可以在需要的时候获取该枚举常量对应的中文名称,以增加代码的可读性和语义表达。在示例中,通过调用getChineseName()方法,可以获取每个枚举常量的中文名。
enum Day {
MONDAY("星期一"), TUESDAY("星期二"), WEDNESDAY("星期三"), THURSDAY("星期四"), FRIDAY("星期五"), SATURDAY("星期六"), SUNDAY("星期日");
private String chineseName;
private Day(String chineseName) {
this.chineseName = chineseName;
}
public String getChineseName() {
return chineseName;
}
}
示例:
Day today = Day.MONDAY;
System.out.println(today); // 输出:MONDAY
System.out.println(today.getChineseName()); // 输出:星期一
枚举定义使得我们可以用更直观和语义化的方式来表示星期几,并且可以轻松地获取与之对应的中文名。
MONDAY("星期一")它和枚举变量怎么关联起来的?
在Java的枚举类型中,每个枚举常量可以有自己的属性和方法。在例子中,MONDAY("星期一")表达式中的括号部分是一个构造函数的调用,用于初始化MONDAY枚举常量的属性。
在枚举类型的定义中,我们可以为每个枚举常量定义参数,并在构造函数中接收和处理这些参数。这样,每个枚举常量就可以拥有自己的属性值,用于表示该常量的特定信息。
下面是这个例子中枚举类型的完整定义:
enum Day {
MONDAY("星期一"), TUESDAY("星期二"), WEDNESDAY("星期三"), THURSDAY("星期四"), FRIDAY("星期五"), SATURDAY("星期六"), SUNDAY("星期日");
private String chineseName;
private Day(String chineseName) {
this.chineseName = chineseName;
}
public String getChineseName() {
return chineseName;
}
}
在上述代码中,MONDAY枚举常量的定义是MONDAY("星期一"),其中的"星期一"就是构造函数的参数。当我们定义枚举常量时,会调用对应的构造函数,并将参数传递给它。构造函数将接收到的参数赋值给枚举常量的属性chineseName。
这样,每个枚举常量就可以通过getChineseName()方法获取其对应的中文名。
Day today = Day.MONDAY;
System.out.println(today); // 输出:MONDAY
System.out.println(today.getChineseName()); // 输出:星期一
通过这种方式,枚举常量和枚举变量是通过构造函数和属性的关联来实现的。每个枚举常量都可以拥有自己的属性值,并且可以通过方法访问这些属性。
枚举多个成员变量
下面是一个示例,展示了一个具有两个成员变量的枚举类型:
enum Car {
BMW("X5", 2022),
MERCEDES("E-Class", 2021),
TOYOTA("Camry", 2023);
private String model;
private int year;
private Car(String model, int year) {
this.model = model;
this.year = year;
}
public String getModel() {
return model;
}
public int getYear() {
return year;
}
}
在上述代码中,我们定义了一个名为Car的枚举类型。每个枚举常量(BMW,MERCEDES和TOYOTA)都有两个成员变量:model和year。构造函数接收这两个参数,并将它们赋值给对应的成员变量。
通过定义成员方法getModel()和getYear(),我们可以获取每个枚举常量的模型和年份信息。
有多个变量的时候,变量是怎么排序的呢?
在枚举类型中,枚举常量的定义顺序决定了它们在枚举类型中的顺序。当你声明枚举常量时,它们按照声明的顺序进行排序。
在示例中,BMW("X5", 2022)是第一个声明的枚举常量,因此它是枚举类型中的第一个常量。参数"X5"赋值给model成员变量,2022赋值给year成员变量。
根据枚举常量声明的顺序,MERCEDES("E-Class", 2021)是第二个常量,TOYOTA("Camry", 2023)是第三个常量。它们的成员变量也按照相同的顺序进行赋值。
枚举常量的声明顺序对于枚举类型中的常量排序以及枚举实例的顺序很重要。你可以根据声明的顺序来引用枚举常量、比较它们的顺序或使用循环遍历枚举类型时的顺序。
通过上述对枚举的介绍,大家应该有了一定的认识。
猜你喜欢
- 2024-10-06 关于Java中枚举Enum的深入剖析(java中枚举类型的使用)
- 2024-10-06 常用类及枚举类(一)(枚举类和普通类的区别)
- 2024-10-06 JAVA ---- 枚举/注解/反射(java中枚举的作用)
- 2024-10-06 深入剖析Java Enum类型(javaenum使用实例)
- 2024-10-06 Java enum——不一样的枚举对象(java 枚举使用)
- 2024-10-06 Java的enum的用法详解(java enum使用)
- 2024-10-06 学习廖雪峰的JAVA教程---java核心类(枚举类)
- 2024-10-06 Java枚举(JAVA枚举类型怎么用)
- 2024-10-06 java高级特性之泛型和枚举(java 泛型实现)
- 2024-10-06 java里枚举非常实用的3个方法,程序员一般都不注意
你 发表评论:
欢迎- 最近发表
-
- 你真的会用 Java 中的线程池吗?多个企业级线程池工具类封装实践
- 线程池的实现原理、优点与风险、以及四种线程池实现
- Java线程池ThreadPoolExecutor实现原理剖析
- 深入分析线程池的实现原理(线程池是干嘛的)
- 一文搞懂JAVA线程池工作原理(java线程池的工作流程)
- Java线程池的工作原理(java线程池的实现原理)
- 5分钟读懂C#中TcpClient、TcpListener和Socket三个类的角色
- JVM对象的创建过程(jvm运行过程中创建的对象一般存放在方法区)
- 对象组成与Java内存模型JMM分析(java对象在内存中存储的结构)
- JVM对象内存分配详细过程(栈上分配->TLAB->老年代->Eden区)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)