java学习笔记 -枚举类入门

枚举类是一种特殊类。

特点

1、枚举类第一行,只能写枚举对象名称,且要用逗号隔开
2、这些名称,本质是常量,每个常量都记住了枚举类的一个对象 

3、枚举类都是最终类,不能再继承

语法

package enumdemo1;
//枚举类都是继承自java.lang.Enum类
//枚举类中的对象,只能用枚举类的名称来调用,不能用new关键字来创建对象
//枚举类是最终类,不能再继承
//枚举类的第一行只能罗列一些名称,这些名称本质上是常量,每个常量会记住枚举类的一个对象
public enum A {
    X,Y,Z
    //若只有一个常量,也可以看作单例类
}

上述代码就创建了一个简单的枚举类。

枚举类还重写了一些普通类的方法,例如toString方法,使直接打印就是对象的名字

package enumdemo1;

public class Text {
    //目的:认识枚举类
    public static void main(String[] args) {
        A a = A.X;
        System.out.println(a);//枚举类的对象,
                                // 直接打印就是对象的名字,重写了toString方法
    }
}

通过一个简单的方向控制案例,我们对比传统常量与枚举的实现方式,快速理解枚举的核心价值与基础语法。

package enumdemo2;

public class Constant {
    public static final int UP=0;
    public static final int DOWN=1;
    public static final int LEFT=2;
    public static final int RIGHT=3;
}
package enumdemo2;

public enum Diretion {
    UP,DOWN,LEFT,RIGHT

}

package enumdemo2;

public class Text1 {
    public static void main(String[] args) {
        move1(Constant.UP);
        move2(Diretion.UP);
    }
    public static void move1(int diretion)
    {
        switch (diretion)
        {
            case Constant.UP:
                System.out.println("向上");
                break;
            case Constant.DOWN:
                System.out.println("向下");
                break;
            case Constant.LEFT:
                System.out.println("向左");
                break;
            case Constant.RIGHT:
                System.out.println("向右");
                break;
            default:
                System.out.println("无效");
                break;
        }
    }
    public static void move2(Diretion diretion)
    {
        switch (diretion)
        {
            case Diretion.UP:
                System.out.println("向上");
                break;
            case DOWN:          //switch中Diretion.UP和UP是同一个对象,所以可以省略Diretion
                System.out.println("向下");
                break;
            case LEFT:
                System.out.println("向左");
                break;
            case RIGHT:
                System.out.println("向右");
                break;

        }
    }
}

相比于move1,move2可以直接杜绝无效参数(使用无效参数时Diretion类中没有,会直接报错),且易于维护。

优势:参数只能是Direction的四个实例,杜绝无效值
代码自解释性强,无需注释说明数字含义。

并且,switch中可以自识别接受的是枚举类,在case后不用采用类名.成员变量名 的形式引用成员变量,可以直接用成员变量名,更方便。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值