Java基础之枚举

1.什么是枚举类.

枚举类型就是多例:一个类有多个实例,但是实例的个数不是无穷的,是有限的,枚举类中的实例称为枚举项,一般一个枚举类不应该有太多枚举项。

2.定义枚举类

        使用enum关键字,例如:

public enum Direction{

FRONT,BEHIND,LEFT,RIGHT;

}

注意:定义枚举类的关键字是enum,而不是Enum(这是Java中的一个类,所有枚举类,都是该类的子类),所有java关键字都是小写,其中FRONT,BEHIND,LEFT,RIGHT,都是本类的对象实例,也就是说本类只有四个对象,在定义枚举项时,以逗号隔开,最后一个枚举项以分号结尾,如果枚举类型中只有枚举项(没有构造器,方法变量)可以省略“ ;",但是建议不要省略,构造方法只能是private类型

3.枚举与swich

Direction d = Direction.FRONT; 
switch (d) { 
    case BEHIND: 
        System.out.println("后");
         break; 
    case FRONT: 
        System.out.println("前"); 
        break; 
    case LEFT: 
        System.out.println("左");
        break; 
    case RIGHT: 
        System.out.println("右"); 
        break; 
    default: break;
     }

注意:在switch中,不能是有枚举类名(这里是Direction),因为编译器会根据switch中d的类型来判断,每个枚举类型,在case中必须必须直接给出和d相同类型的枚举项,而不能再有类型

4.所有枚举类都是Enum的子类

所有枚举类都默认是Enum的子类,无需是由extends来继承,这说明Enum中的方法所有枚举类都拥有 int compareTo(),比较两个枚举项谁大谁小,其实就是比较枚举项在枚举类中声明的顺序,例如FRONT下标是0,BEHIND下标是1.。

        枚举类常用的函数

枚举类的常用函数
boolean equals()比较两个枚举项是否相等
int hashCode()返回枚举项的hashCode
String name()返回枚举项的名称
int ordinal()返回枚举项在枚举类中声明的序号,第一个枚举项的序号是0
String toString()把枚举项转换成字符串
static T valueOf(Class enumType,String name)把字符串转换成枚举项

5.枚举类的构造器

  • 枚举类也可以有构造器,构造器默认都是private修饰,而且只能是private修饰,因为枚举类型的实力不能让外界来创建;
  • 其实创建枚举项就等于调用本类的无参构造器;

6.枚举类可以有成员

其实枚举类和正常类一样,都可以有实例变量,实例方法,静态方法等等,只不过他的实例个数是有限的,如果Direction类只有唯一的构造器,并且是有参的构造器,那么在创建枚举项时,必须对枚举项赋值。

7.枚举类中也可以有抽象方法

  • 枚举类中也可以有抽象方法,创建每个枚举项时,使用“特殊”的语法重写抽象方法
  • 只需在方法上添加abstract关键字即可,不可以将类名声明称抽象类。
  • 特殊方法(匿名内部类),也就是说每个枚举对象,都是匿名内部类子类的对象

public enum Direction {
    FRONT("前"){
        publie void fun(){
            System.out.print1n("sdfd");
        }
    }

},BEHIND("后"){
        publie void fun(){
            System.out.print1n("sdfd");
        }
    }
},LEFT("左"){
        publie void fun(){
            System.out.print1n("sdfd");
        }
    }
};
public abstract void fun();

8.每个枚举类都有两个特殊方法

每个枚举类都有两个不需声明的的特殊static方法,这两个方法,不是父类中的方法,

values()返回本类所有枚举项

valuesOf()通过枚举项的名字返回指定枚举项,注意,这个方法跟Enum类中的valuesOf()的方法参数不同

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值