本文概述
- Java枚举要记住的要点
- 定义Java枚举
- switch语句中的Java枚举
它可以用于一周中的几天(周日, 周一, 周二, 周三, 周四, 周五和周六), 方向(北, 南, 东和西), 季节(春季, 夏季, 冬季和秋季或秋季) ), 颜色(红色, 黄色, 蓝色, 绿色, 白色和黑色)等。根据Java的命名约定, 所有常量都应使用大写字母。因此, 我们用大写字母表示枚举常量。
可以将Java枚举视为具有固定常量集(不变的变量)的类。 Java枚举常量是静态的, 并且是隐式的final。从JDK 1.5开始可用。
枚举用于创建我们自己的数据类型, 例如类。枚举数据类型(也称为枚举数据类型)用于在Java中定义枚举。与C / C ++不同, Java中的枚举功能更强大。在这里, 我们可以在类内或类外定义一个枚举。
Java Enum在内部继承Enum类, 因此它不能继承任何其他类, 但是可以实现许多接口。我们可以在Java枚举中包含字段, 构造函数, 方法和主要方法。
Java枚举要记住的要点
- 枚举可提高类型安全性
- 枚举可轻松用于切换
- 枚举可以遍历
- 枚举可以具有字段, 构造函数和方法
- Enum可以实现许多接口, 但是不能扩展任何类, 因为它在内部扩展了Enum类
文章图片
Java枚举的简单示例
class EnumExample1{
//defining the enum inside the class
public enum Season { WINTER, SPRING, SUMMER, FALL }
//main method
public static void main(String[] args) {
//traversing the enum
for (Season s : Season.values())
System.out.println(s);
}}
立即测试
输出:
WINTER
SPRING
SUMMER
FALL
让我们看看Java枚举的另一个示例, 其中我们使用Java枚举的value(), valueOf()和ordinal()方法。
class EnumExample1{
//defining enum within class
public enum Season { WINTER, SPRING, SUMMER, FALL }
//creating the main method
public static void main(String[] args) {
//printing all enum
for (Season s : Season.values()){
System.out.println(s);
}
System.out.println("Value of WINTER is: "+Season.valueOf("WINTER"));
System.out.println("Index of WINTER is: "+Season.valueOf("WINTER").ordinal());
System.out.println("Index of SUMMER is: "+Season.valueOf("SUMMER").ordinal());
}}
输出:
WINTER
SPRING
SUMMER
FALL
Value of WINTER is: WINTER
Index of WINTER is: 0
Index of SUMMER is: 2
注意:Java编译器在编译时会在枚举内部向内部添加values(), valueOf()和ordinal()方法。它在内部为枚举创建静态和最终类。
枚举中的values()方法的目的是什么?
Java编译器在创建枚举时在内部添加values()方法。 values()方法返回一个包含枚举的所有值的数组。
枚举中的valueOf()方法的目的是什么?
Java编译器在创建枚举时在内部添加valueOf()方法。 valueOf()方法返回给定常量枚举的值。
枚举中ordinal()方法的目的是什么?
Java编译器在创建枚举时在内部添加ordinal()方法。 ordinal()方法返回枚举值的索引。
定义Java枚举 枚举可以在类内或类外定义, 因为它类似于类。枚举常量末尾的分号(; )是可选的。例如:
enum Season { WINTER, SPRING, SUMMER, FALL }
要么,
enum Season { WINTER, SPRING, SUMMER, FALL;
}
Java枚举的两个定义是相同的。
Java枚举示例:在外部类中定义
enum Season { WINTER, SPRING, SUMMER, FALL }
class EnumExample2{
public static void main(String[] args) {
Season s=Season.WINTER;
System.out.println(s);
}}
立即测试
输出:
WINTER
Java枚举示例:在类内部定义
class EnumExample3{
enum Season { WINTER, SPRING, SUMMER, FALL;
}//semicolon(;
) is optional here
public static void main(String[] args) {
Season s=Season.WINTER;
//enum type is required to access WINTER
System.out.println(s);
}}
立即测试
输出:
WINTER
Java枚举示例:枚举内部的main方法
如果将main()方法放在枚举内, 则可以直接运行枚举。
enum Season {
WINTER, SPRING, SUMMER, FALL;
public static void main(String[] args) {
Season s=Season.WINTER;
System.out.println(s);
}
}
输出:
WINTER
初始化枚举常量的特定值
枚举常量的初始值从0、1、2、3等开始。但是, 我们可以通过定义字段和构造函数来将特定值初始化为枚举常量。如前所述, Enum可以具有字段, 构造函数和方法。
为枚举常量指定初始值的示例
class EnumExample4{
enum Season{
WINTER(5), SPRING(10), SUMMER(15), FALL(20);
private int value;
private Season(int value){
this.value=http://www.srcmini.com/value;
}
}
public static void main(String args[]){
for (Season s : Season.values())
System.out.println(s+" "+s.value);
}}
立即测试
输出:
WINTER 5
SPRING 10
SUMMER 15
FALL 20
枚举类型的构造方法是私有的。如果你不声明私有编译器, 则会在内部创建私有构造函数。
enum Season{
WINTER(10), SUMMER(20);
private int value;
Season(int value){
this.value=http://www.srcmini.com/value;
}
}
编译器为上面的枚举类型示例生成的内部代码
final class Season extends Enum
{
public static Season[] values()
{
return (Season[])$VALUES.clone();
}
public static Season valueOf(String s)
{
return (Season)Enum.valueOf(Season, s);
}
private Season(String s, int i, int j)
{
super(s, i);
value = http://www.srcmini.com/j;
}
public static final Season WINTER;
public static final Season SUMMER;
private int value;
private static final Season $VALUES[];
static
{
WINTER = new Season("WINTER", 0, 10);
SUMMER = new Season("SUMMER", 1, 20);
$VALUES = (new Season[] {
WINTER, SUMMER
});
}
}
我们可以通过new关键字创建Enum的实例吗?
不, 因为它仅包含私有构造函数。 |
当然是!我们可以有抽象方法, 并可以提供这些方法的实现。
switch语句中的Java枚举 我们可以在给定的示例中将enum应用于switch语句:
在switch语句上应用Enum的示例
class EnumExample5{
enum Day{ SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY}
public static void main(String args[]){
Day day=Day.MONDAY;
switch(day){
case SUNDAY:
System.out.println("sunday");
break;
case MONDAY:
System.out.println("monday");
break;
default:
System.out.println("other day");
}
}}
立即测试
【Java枚举用法详解】输出:
monday
推荐阅读
- Java For-each循环|增强的For循环
- Java自动装箱和拆箱
- 如何在Mac上免费获取Microsoft Word(详细分步指南)
- 如何加速Windows 11并提高性能(15种有效方式)
- 电脑主机,本文教您电脑主机的相关知识
- hp笔记本怎样进bios,本文教您惠普笔记本怎样进bios
- 显卡怎样安装,本文教您显卡怎样安装
- tf卡与sd卡的区别,本文教您tf卡与sd卡有啥区别
- 固态硬盘4k对齐,本文教您怎样看固态硬盘4k是否对齐