enum(枚举)

什么是enum(枚举):

 

enum是java语言关键字, 允许通过该关键字创建一个具有名的值的新类型,而这些具有名的值可以作为常规的程序组件使用。

 

enum基本的特性: 

 

1. 调用enum的values方法返回一个enum实例的数组,可以循环使用values()返回的数组。

 

view plaincopy to clipboardprint?

//当使用关键字enum定义一个Enum类型时,编译器会自动为你生成一个类。   

//这个类继承自java.lang.Enum。 Enum是一个抽象类, 实现了Comparable接口,Serializable接口   

//所以可以调用compareTo方法进行enum实例的比较。Enum也实现了equals方法,   

//hashCode方法。 可以使用 == 来比较两个enum实例是否相等.   

public enum Shrubbery{   

    GROUND, CRAWLING, HANGING   

}   

public class EnumClass {   

    public static void main(String[] args) {   

        for(Shrubbery s : Shrubbery.values()){   

            //ordinal()方法返回一个int值,这是每个enum实例在声明时的次序, 从0开始。   

            System.out.println(s + " ordinal: " + s.ordinal());   

            //调用抽象类Enum的compareTo方法比较两个实例的声明次序是否相等   

            System.out.println(s.compareTo(Shrubbery.CRAWLING));   

            //调用抽象类Enum的compareTo方法比较是否同一个实例   

            System.out.println(s.equals(Shrubbery.CRAWLING));   

            //使用 == 比较是否同一个实例   

            System.out.println(s == Shrubbery.CRAWLING);   

            //返回声明该enum实例所属的enum类   

            System.out.println(s.getDeclaringClass());   

            //返回声明enum实例时的名字,与调用toString方法效果一样   

            System.out.println(s.name());   

            System.out.println("---------------------");   

        }   

 

        for(String s : "HANGING CRAWLING GROUND".split(" ")){   

            //valueOf是Enum的一个static方法,根据给定的名字返回相应的enum实例   

            Shrubbery shrub = Enum.valueOf(Shrubbery.class, s);   

            System.out.println(shrub);   

        }   

    }   

}   

// 代码参考与<<Think in Java 4ed>>  

//当使用关键字enum定义一个Enum类型时,编译器会自动为你生成一个类。

//这个类继承自java.lang.Enum。 Enum是一个抽象类, 实现了Comparable接口,Serializable接口

//所以可以调用compareTo方法进行enum实例的比较。Enum也实现了equals方法,

//hashCode方法。 可以使用 == 来比较两个enum实例是否相等.

public enum Shrubbery{

GROUND, CRAWLING, HANGING

}

public class EnumClass {

public static void main(String[] args) {

for(Shrubbery s : Shrubbery.values()){

//ordinal()方法返回一个int值,这是每个enum实例在声明时的次序, 从0开始。

System.out.println(s + " ordinal: " + s.ordinal());

//调用抽象类Enum的compareTo方法比较两个实例的声明次序是否相等

System.out.println(s.compareTo(Shrubbery.CRAWLING));

//调用抽象类Enum的compareTo方法比较是否同一个实例

System.out.println(s.equals(Shrubbery.CRAWLING));

//使用 == 比较是否同一个实例

System.out.println(s == Shrubbery.CRAWLING);

//返回声明该enum实例所属的enum类

System.out.println(s.getDeclaringClass());

//返回声明enum实例时的名字,与调用toString方法效果一样

System.out.println(s.name());

System.out.println("---------------------");

}

for(String s : "HANGING CRAWLING GROUND".split(" ")){

//valueOf是Enum的一个static方法,根据给定的名字返回相应的enum实例

Shrubbery shrub = Enum.valueOf(Shrubbery.class, s);

System.out.println(shrub);

}

}

}

// 代码参考与<<Think in Java 4ed>> 

 

2.  静态导入应用于enum

 

view plaincopy to clipboardprint?

public class StaticImport {   

    public static void main(String[] args) {   

        //没有使用static导入,引用enum实例   

        System.out.println(Shrubbery.GROUND);   

        System.out.println(Shrubbery.CRAWLING);   

        System.out.println(Shrubbery.HANGING);   

        //使用static导入,引用enum实例   

        System.out.println(GROUND);   

        System.out.println(CRAWLING);   

        System.out.println(HANGING);   

    }   

}  

public class StaticImport {

public static void main(String[] args) {

//没有使用static导入,引用enum实例

System.out.println(Shrubbery.GROUND);

System.out.println(Shrubbery.CRAWLING);

System.out.println(Shrubbery.HANGING);

//使用static导入,引用enum实例

System.out.println(GROUND);

System.out.println(CRAWLING);

System.out.println(HANGING);

}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值