java初学者笔记22 —— 枚举类型

枚举类型

1.使用枚举类型设置常量:

// SeasonInterface接口
public interface SeasonInterface {
    int SPRING = 1,SUMMER = 2,AUTUMN = 3,WINTER = 4;
}

// SeasonEnum常量
enum SeasonEnum implements SeasonInterface{
    SPRING, SUMMER ,AUTUMN ,WINTER
}

// SeasonDemo类
public class SeasonDemo {
    public static void printSeason1(int season){
        switch (season){
            case SeasonInterface.SPRING:
                System.out.println("这是春季");break;
            case SeasonInterface.SUMMER:
                System.out.println("这是夏季");break;
            case SeasonInterface.AUTUMN:
                System.out.println("这是秋季");break;
            case SeasonInterface.WINTER:
                System.out.println("这是冬季");break;
            default:
                System.out.println("这不是四季常量");
        }
    }

    public static void printSeason2(SeasonEnum season){
        switch (season){
            case SPRING:
                System.out.println("这是春季");break;
            case SUMMER:
                System.out.println("这是夏季");break;
            case AUTUMN:
                System.out.println("这是秋季");break;
            case WINTER:
                System.out.println("这是冬季");break;
        }
    }

    public static void main(String[] args){
        printSeason1(SeasonInterface.SPRING);
        printSeason1(3);
        printSeason1(-1);
        printSeason2(SeasonEnum.WINTER);
    }
}

2.枚举类型的常用方法

(1)values()方法

// SeasonEnum枚举类
enum SeasonEnum {
    SPRING,SUMMER,AUTUMN,WINTER;
}

// ShowEnum类
public class ShowEnum {
    public static void main(String[] args) {
        SeasonEnum es[] = SeasonEnum.values();
        for(int i = 0;i < es.length ;i ++){
            System.out.println("枚举常量:" + es[i]);
        }
    }
}

(2)valueOf()方法与compareTo方法

eg.使用字符串创建一个季节的枚举值,并判断季节的位置

// SeasonEnum
public enum SeasonEnum {
    SPRING, SUMMER ,AUTUMN ,WINTER;
}

// EnumMethodTest类
public class EnumMethodTest {
    public static void main(String[] args) {
        SeasonEnum tmp = SeasonEnum.valueOf("SUMMER");
        SeasonEnum es[] = SeasonEnum.values();
        for(int i = 0 ; i < es.length;i ++){
            String message = "";
            int result = tmp.compareTo(es[i]);
            if(result < 0){
                message = tmp + "在" + es[i] + "的前" + (-result) + "个位置";
            }else if(result > 0){
                message = tmp + "在" + es[i] + "的后" + result + "个位置";
            }else if(result == 0){
                message = tmp + "与" + es[i] + "是同一个值";
            }
            System.out.println(message);
        }
    }
}

(3)ordinal()方法

枚举类型中的ordinal()方法用于获取某个枚举对象的位置索引值

enum SeasonEnum {
    SPRING, SUMMER, AUTUMN, WINTER
}

public class EnumIndexTest {
    public static void main(String[] args) {
        SeasonEnum es[];
        es = SeasonEnum.values();
        for(int i = 0;i < es.length;i ++){
            System.out.println(es[i] + "在枚举类型中位置索引值" + es[i].ordinal());
        }
    }
}

(4)枚举类型中的构造方法

注意:在枚举数据类型中,可以添加构造法法,但是规定这个构造方法必须被private修饰符所修饰。枚举类型定义的构造方法语法。我们用一个例子来说明:

为四季枚举创建构造方法,记录每一个季节的特征

enum SeasonEnum{
    SPRING("万物复苏"),
    SUMMER("烈日炎炎"),
    AUTUMN("秋草枯黄"),
    WINTER("白雪皑皑");

    private String remark;
    private SeasonEnum(String remark){
        this.remark = "我是" + this.toString() + ",我来之后" + remark + "。";
    }
    public String getRemark(){
        return remark;
    }
}

public class EnumConstructTest {
    public static void main(String[] args) {
        SeasonEnum es[] = SeasonEnum.values();
        for(int i = 0;i < es.length;i ++){
            System.out.println(es[i].getRemark());
        }
    }
}

3.枚举类型的优势

(1)类型安全

(2)紧凑有效的数据定义

(3)可以和程序其他部分完美交互

(4)运行效率高

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值