java枚举

一、为什么要有枚举?
C语言作为编程语言的“鼻祖”,里面是有枚举的。java作为面向对象的语言,一开始在设计时想的是要抛弃枚举的,但是随着使用的人数逐渐增多,就不得不将枚举从新增加到java中。于是在JDK1.5中引入枚举。
为什么使用的人多了就得将枚举加入java中?举个例子:假如要定义周一到周日对应的数字,有的人想周一用1表示,但是有的人想周日用1表示。人少的情况下还好解决,可以一旦人多了就出现问题了。所以就得引入枚举结局问题。
二、枚举的作用
用了枚举就相当于制定了一种规则,规定某个类型的变量只能为一个固定的值。这样别人在引用的使用,如果不按照规矩来,编译器就会报错。
三、枚举的使用
枚举的定义使用enum关键字。枚举中定义成员变量时,成员变量必须位于最前面,换句话说就是成员变量前面面不能有任何方法。枚举的构造方法必须为私有的。有点类似单例。

简单的使用1(带有构造方法):

public class Enum {


    public static void main(String[] args) {        
        WeekDay wee = WeekDay.MON;
        System.out.println(wee);        // 自动调用toString方法
        System.out.println(wee.name()); // 和toString的返回结果相同
        System.out.println(wee.ordinal());  // 返回在枚举中的位置,从0开始
        System.out.println(WeekDay.valueOf("SUN")); // 枚举的静态方法
        System.out.println(WeekDay.values().length);

    }

    // 定义一个简单的枚举
    public enum  WeekDay{

        // 成员变量后面跟(),表示调用无参构造方法。如果里面有参数,根据参数的类型和个数调用对应的有参构造函数
        SUN(),MON(1),TUE,WED,THI,FRI,SAT;

        // 构造方法必须放在常量声明后面。并且必须为私有的。
        private WeekDay() {System.out.println("first");}

        private WeekDay(int i) {System.out.println("second");}
    }

}

简单使用2:
定义一个枚举(带有抽象方法):

public enum TrafficLamp{
        RED(30){

            @Override
            public TrafficLamp nextLamp() {
                // TODO Auto-generated method stub
                return GREEN;
            }

        },GREEN(30){

            @Override
            public TrafficLamp nextLamp() {
                // TODO Auto-generated method stub
                return YELLOW;
            }

        },YELLOW(5){

            @Override
            public TrafficLamp nextLamp() {
                // TODO Auto-generated method stub
                return RED;
            }

        };

        // 枚举中的成员代表的是一个类对象,所以就得实现抽象方法
        public abstract TrafficLamp nextLamp();

        private TrafficLamp(int time){this.time = time;}

        private int time;
    }

测试:

    public static void main(String[] args) {

        TrafficLamp green = TrafficLamp.GREEN;
        System.out.println(green.nextLamp());  // yellow
        System.out.println(green.time);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值