定义: 所谓枚举类型,就是用一组数量有限的标识符来表示一组连续的整型常数,使能够更清晰的表示出现实世界
枚举的用法:一些方法在运行的时候,需要的数据类型不是随意的,它是要在一个范围内有效的值,就可以用枚举来解决这个问题
语法格式定义
enum 枚举类的类名{
//先定义出 对应的 枚举值
//再来写方法
}
枚举的注意点:
1.枚举类型 是一个 特殊的 类 final class 枚举类名 extends java.lang.Enum
2.枚举类中 的 枚举值(man, woman) 默认修饰符 是 public static final
3.枚举类中的 枚举值 它的类型 是 本类类型 Sex类型的 对象
4.枚举类的构造方法 是 private修饰的, 枚举类 会自内部 自己构造枚举值
5.枚举类 是可以有成员变量的,但是只能通过枚举值 去访问枚举类型 的 实例成员变量
6.枚举类 构造的 枚举值对象,默认是无参构造的,但是你可以通过有参数的构造来构造他们, 这个有参构造 必须是 private修饰的
7.枚举类 也可以有抽象的方法, 但是注意的是 枚举值必须要实现抽象的方法
8.枚举值 必须是 枚举类中的 第一个语句
示例代码:public class Demo{
public static void main(String[] args) {
Student jack = new Student();
jack.setAge(33);
jack.setName("杰克");
jack.setSex(Sex.man);
Sex.man.value = "呵呵";
Sex.value1 = "haha";
System.out.println("jack 的 姓名 : " + jack.getName() + ", 性别是 : " + jack.getSex());
System.out.println("value : "+ Sex.man.value); // "hehe"
System.out.println("value : "+ Sex.woman.value); // null
System.out.println("value : "+ Sex.value1);
//Sex s = new Sex();
Sex.man.test(); Sex.woman.test(); Sex.man.test1(); Sex.woman.test1(); } } enum Sex{ //定义枚举值 man("男"){ public void test1(){ System.out.println("man 在 实现抽象方法"); } }, woman("女"){ public void test1(){ System.out.println("woman 在 实现抽象方法"); } }, renyao("人妖"){ public void test1(){ System.out.println("人妖 在 实现抽象方法"); } };//特别注意大括号后面的逗号和分号 //成员变量 String value; static String value1; //行为 方法 //1.构造方法 private Sex(String value){ this.value = value; } public void test(){ System.out.println("这是枚举类型的 公开的普通方法 : " + this.value); } //声明了一个抽象方法 public abstract void test1(); } class Student{ private String name; private int age; private Sex sex; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Sex getSex() { return sex; } public void setSex(Sex sex) { this.sex = sex; } }
遍历、switch 等常用操作
对enum进行遍历和switch的操作示例代码:
public
class
Test {
public
static
void
main(String[] args) {
for
(EnumTest e : EnumTest.values()) {
System.out.println(e.toString());
}
System.out.println(
"----------------我是分隔线------------------"
);
EnumTest test = EnumTest.TUE;
switch
(test) {
case
MON:
System.out.println(
"今天是星期一"
);
break
;
case
TUE:
System.out.println(
"今天是星期二"
);
break
;
// ... ...
default
:
System.out.println(test);
break
;
}
}
}
输出结果:
MON
TUE
WED
THU
FRI
SAT
SUN
enum 对象的常用方法介绍
int
compareTo(E o)
比较此枚举与指定对象的顺序。
Class<E>
getDeclaringClass()
返回与此枚举常量的枚举类型相对应的 Class 对象。
String
name()
返回此枚举常量的名称,在其枚举声明中对其进行声明。
int
ordinal()
返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。
String
toString()
返回枚举常量的名称,它包含在声明中。
static
<T extends Enum<T>> T
valueOf(Class<T> enumType, String name)
返回带指定名称的指定枚举类型的枚举常量。总结
可以把 enum 看成是一个普通的 class,它们都可以定义一些属性和方法,不同之处是:enum 不能使用 extends 关键字继承其他类,因为 enum 已经继承了 Java.lang.Enum(java是单一继承)。
以上是我对java中枚举的部分总觉以及资料查找,若有错误,欢迎指正!