Java枚举
1 什么是Java枚举
Java中的枚举(Enum)是一种数据类型,包含一组固定的常量。
它可以用于一周中的几天(周日,周一,周二,周三,周四,周五和周六),方向(东、南、西、北),季节(春季,夏季,秋季,冬季),颜色(红色,黄色,蓝色,绿色,白色和黑色)等。根据Java的命名规范,所有常量都应使用大写字母。因此,我们用大写字母表示枚举常量。
可以将Java枚举视为具有固定常量集(不变的变量)的类。Java枚举常量是static静态的,并且是隐式的final。Java枚举是JDK 1.5开始使用的语法特性。
Java枚举用于创建我们自己的数据类型。与C/C ++不同,Java中的枚举功能更强大。我们可以在类内或类外定义一个枚举。
Java枚举在内部继承Enum类,因此它不能继承任何其他类,但是可以实现许多接口。我们可以在Java枚举中包含属性,构造方法,方法和main方法。
2 Java枚举的特点
- 枚举可提高类型安全性
- 枚举可轻松用于切换
- 枚举可以遍历
- 枚举可以具有属性,构造方法和普通方法
- 枚举可以实现许多接口,但是不能扩展任何类,因为它在内部继承了Enum类
3 Java枚举的例子
package com.yiidian;
/**
* 一点教程网: http://www.yiidian.com
*/
/**
* Java枚举的例子
*/
class Demo{
//在类内部定义枚举
public enum Season { WINTER, SPRING, SUMMER, FALL }
//main方法
public static void main(String[] args) {
//使用枚举
for (Season s : Season.values())
System.out.println(s);
}
}
输出结果为:
WINTER
SPRING
SUMMER
FALL
让我们看看Java枚举的另一个示例,其中我们使用Java枚举的value(),valueOf()和ordinal()方法。
package com.yiidian;
/**
* 一点教程网: http://www.yiidian.com
*/
/**
* Java枚举的例子
*/
class EnumExample1{
//类内部定义枚举
public enum Season { WINTER, SPRING, SUMMER, FALL }
//main方法
public static void main(String[] args) {
//打印输出所有枚举值
for (Season s : Season.values()){
System.out.println(s);
}
System.out.println("WINTER的value值是: "+Season.valueOf("WINTER"));
System.out.println("WINTER的索引是: "+Season.valueOf("WINTER").ordinal());
System.out.println("SUMMER的索引是: "+Season.valueOf("SUMMER").ordinal());
}}
输出结果为:
WINTER
SPRING
SUMMER
FALL
WINTER的value值是: WINTER
WINTER的索引是: 0
SUMMER的索引是: 2
3.1 枚举的values()方法
values() 方法返回一个包含枚举的所有值的数组。
3.2 枚举的valueOf()方法
valueOf()方法返回给定常量枚举的值。
3.3 枚举的ordinal()方法
ordinal() 方法返回枚举值的索引。
4 定义Java枚举语法
枚举可以定义在类内部或类外部,因为它和类很相似。枚举常量末尾的分号(;)是可选的。例如:
enum Season { WINTER, SPRING, SUMMER, FALL }
或者
enum Season { WINTER, SPRING, SUMMER, FALL; }
4.1 类外部定义Java枚举
package com.yiidian;
/**
* 一点教程网: http://www.yiidian.com
*/
/**
* 类外部定义Java枚举
*/
enum Season { WINTER, SPRING, SUMMER, FALL }
class Demo{
public static void main(String[] args) {
Season s=Season.WINTER;
System.out.println(s);
}
}
输出结果为:
WINTER
4.2 类内部定义Java枚举
package com.yiidian;
/**
* 一点教程网: http://www.yiidian.com
*/
/**
* 类内部定义Java枚举
*/
class Demo{
enum Season { WINTER, SPRING, SUMMER, FALL; }//分号(;)是可选的
public static void main(String[] args) {
Season s=Season.WINTER;//必须输入枚举类型才能访问WINTER
System.out.println(s);
}
}
输出结果为:
WINTER
5 main方法的枚举
如果将main() 方法放在枚举内,则可以直接运行枚举。
package com.yiidian;
/**
* 一点教程网: http://www.yiidian.com
*/
/**
* main方法中的枚举
*/
enum Season {
WINTER, SPRING, SUMMER, FALL;
public static void main(String[] args) {
Season s=Season.WINTER;
System.out.println(s);
}
}
输出结果为:
WINTER
6 初始化枚举常量
枚举常量的初始值从0、1、2、3等开始。但是,我们可以通过定义属性和构造方法来为枚举常量设置初始化值。前面我们讲到,枚举(Enum)可以包含属性,构造方法和普通方法。
package com.yiidian;
/**
* 一点教程网: http://www.yiidian.com
*/
/**
* 初始化枚举常量的例子
*/
class Demo{
enum Season{
WINTER(5), SPRING(10), SUMMER(15), FALL(20);
private int value;
private Season(int value){
this.value=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
7 switch中使用枚举
我们可以将Java枚举应用在switch语句中,如下所示:
package com.yiidian;
/**
* 一点教程网: http://www.yiidian.com
*/
/**
* switch中使用枚举的例子
*/
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");
}
}
}
输出结果为:
monday
热门文章
优秀文章