Java学习笔记---枚举

Java学习笔记—枚举

  • 什么是枚举?
    • 枚举就是在一定的范围内取值,取得的值是范围内的一个
    • 如下就不是枚举:(交通灯的三色)
public class TestEnum {
    //传统方式
    private int color;
    public void test(){
    //这里不会报错,但是10000不属于规定的范围
        this.color = 10000; //Color1.RED;
    }
}
class Color1{
    public static final int RED = 1;//红灯亮为1
    public static final int GREEN = 2;//绿灯亮为2
    public static final int YELLOW = 3;//黄灯亮为3
}
    第二种方式
 public class TestEnum {
    //第二种方式
    private Color2 color;
    public void test(){
        this.color = Color2.RED; //避免 new Color2();
    }
}
class Color2{
    //构造方法私有化
    private Color2(){}
    public static final Color2 RED = new Color2();//红灯亮为1
    public static final Color2 GREEN = new Color2();//绿灯亮为2
    public static final Color2 YELLOW = new Color2();//黄灯亮为3
}   
枚举方式,使用一个关键字:enum(枚举的构造方法也是私有的)
public class TestEnum {
    //枚举方式
    private Color3 color;
    public void test(){
        this.color = Color3.RED; 
    }
}  
//使用枚举实现(即第二种方式的简写方式:运用了一个关键词enum)
enum Color3 {
    RED,GREEN,YELLOW; //即Color3的3个实例;
}
  • 特殊的枚举操作
    • 在枚举类里面有构造方法
      • 构造方法里面有参数,需要在每个实例上面都写参数
    • 在枚举类里面有抽象方法
      • 在枚举的每个实例里面都重写这个抽象方法
enum color11{
    RED("red"){
        @Override
        public void print1(){
            System.out.println("red");
        }
    },
    GREEN("green"){
        @Override
        public void print1(){
            System.out.println("red");
        }
    },
    YELLOW("yellow"){
        @Override
        public void print1(){
            System.out.println("red");
        }
    };
    private color11 (String name) {}
    //抽象方法
    //当在枚举里面写了抽象方法之后,需要在每个实例上都实现抽象方法
    public abstract void print1();
}
  • 枚举的API的使用(常用方法 )
    • name ():返回枚举的名称
    • ordinal ():返回枚举的下标,下标从0开始
    • valueOf ( Class<t> enumType , String name):得到枚举的对象
    • 在编译时生成的两个方法:
      • valueof (String name):转换枚举对象
      • values ():获取所有枚举对象数组
      • 如下是以上方法的应用:
import org.junit.Ignore;
import org.junit.Test;

public class TestEnum2 {
    //知道枚举的下标,得到枚举的对象和名称
    @Test
    public void test3(){
        int idx2 = 2;
        //得到对象
        Color100[] cs = Color100.values();
        //根据下标得到对象
        Color100 c12 = cs[idx2];
        //得到枚举名称
        String name = c12.name();
        System.out.println(name);
    }

    //知道枚举的名称,得到枚举的对象和下标
    @Ignore
    public void test2(){
        String name = "GREEN";
        //得到对象
        Color100 c1 = Color100.valueOf(name);
        //得到下标
        int idx1 = c1.ordinal();
        System.out.println(idx1);
    }
    //知道枚举的对象,得到枚举的名称和下标
    @Ignore
    public void test1(){
        //得到枚举对象
        Color100 c100 = Color100.RED;
        //枚举的名称
        String name = c100.name();
        //枚举的下标
        int idx = c100.ordinal();
        System.out.println(name+" "+idx);
    }
}
enum Color100{
    RED,GREEN,YELLOW;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值