Java——枚举enum

枚举我认为:枚举简单的说也可以一种数据类型,只不过是这种数据类型只包含我们自定义的数据,它是一组有共同特性的数据的集合。举个简单例子,颜色也可以定义成枚举类型,它可以包含你自定义的任何颜色,当需要的时候,只需要通过枚举调用即可,另外比如季节(春夏秋冬)、星期(星期一到星期日)、衣服的号码(S、M、L、XL)等等这些具有共同特性的数据都可以定义枚举。下面是个例子:
public class EnumTest {

    public static void main(String[] args) {
        Scanner in =  new Scanner(System.in);
        System.out.println("请输入:");
        String input=in.next().toUpperCase();
        Size size=Enum.valueOf(Size.class,input);
        System.out.println("size="+size);
        System.out.println("abbreviation="+size.getAbbreviation());
        if(size==Size.EXTRA_LAGRE){
            System.out.println("Good job!");
        }
    }    

    enum Size{
        SMALL("S"),MEDIUM("M"),LAGRE("L"),EXTRA_LAGRE("XL");

        private String abbreviation;

        private Size(String abbreviation){
            this.abbreviation=abbreviation;
        }

        public String getAbbreviation() {
            return abbreviation;
        }
    }

}

枚举的常用方法

static Enum valueOf(Class enumClass, String name)返回指定名字、给定义的枚举常量。

String name()返回枚举常量的名称

String toString()返回枚举的常量名称 比name更常用。

int ordinal() 返回枚举值在枚举中的位置(索引),从0开始。

int compareTo(E other)如果返回枚举常量在other之前,则返回一个负值;如果this==other,则返回0;否则返回正常值。枚举常量出现的次序在enum声明中给出。

下面是个例子:

public static void main(String[] args){
            Size size =Size.MEDIUM;
            System.out.println(size);//MEDIUM
            System.out.println(size.name());//MEDIUM
            System.out.println(size.ordinal());//1
            System.out.println(Size.valueOf("MEDIUM").toString());//MEDIUM
            System.out.println(Size.values().length);//4  获取枚举长度
        }

枚举的遍历

public static void main(String[] args){
        for(Size size:Size.values()){
            System.out.println(size);
        }
    }

枚举特点

1.用enum定义枚举类默认继承了java.lang.Enum类而不是继承了Object类。其中java.lang.Enum类实现了java.lang.Serializable和java.lang.Comparable两个接口。

2.枚举类的构造函数只能使用private访问修饰符,如果省略了其构造器的访问控制符,则默认使用private修饰。

3.枚举类的所有实例必须在枚举类中显式列出,否则这个枚举类将永远都不能产生实例。列出这些实例时,系统会自动添加public static final修饰,无需程序员显式添加。

4.枚举类型的变量值能存储这个类型声明中给定的某个枚举值或者null值,null表示这个变量没有设置任何值。

5.如果比较两个枚举类型de值,永远不要调用equals,直接使用“==”就可以了。

6.枚举也可以像一般的类一样添加方法和属性,可以为它添加静态和非静态的属性或方法。

例如:

public enum Gender {

    MALE("男"), FEMALE("女");
    private String name;

    private Gender(String name) {
        this.name = name;
    }

    public String getName() {
        return this.name;
    }

    public String toString() {
        String name = null;
        switch (this) {
        case MALE:
            name = "男";
            break;
        case FEMALE:
            name = "女";
            break;
        }
        return name;
    }
}
时间: 2024-11-07 07:34:38

Java——枚举enum的相关文章

Java 枚举(enum) 详解7种常见的用法

用法一:常量 在JDK1.5 之前,我们定义常量都是: public static fianl.... .现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法. Java代码 public enum Color { RED, GREEN, BLANK, YELLOW } 用法二:switch JDK1.6之前的switch语句只支持int,char,enum类型,使用枚举,能让我们的代码可读性更强. Java代码 enum Signal { GREEN, YE

Java枚举enum以及应用:枚举实现单例模式

枚举作为一个常规的语言概念,一直到Java5才诞生不得不说有点奇怪,以至于到现在为止很多程序员仍然更喜欢用static final的形式去命名常量而不使用,一般情况下,Java程序员用这种方式去实现枚举: class EnumByClass{ public static final int RED=0; public static final int GREEN=1; public static final int BLUE=2; } 这种方式实现的枚举也叫int枚举模式,尽管很常用,但是由in

java枚举enum

http://www.cnblogs.com/wenruo/p/5349614.html java的枚举通过关键字enum实现.可以理解为一个类,不过这个类由编译器自动加了一些方法. static values()方法用来按照enum常量的声明顺序 产生由这些常量值构成的数组 ordinal 表示某个特定enum常量的声明顺序 toString() 以显示每个enum实例的名字 可以在switch语句中使用,但是注意case处直接写常量,不加enum的名字. 1 enum Spiciness {

Java枚举enum使用及相关的操作

在Java1.5之后,引入了枚举新的特性,在之前,java有两种定义新类型的方式:类和接口.但是在特殊情况下,满足不了我们的需求,比如我们定义一个Color类,它只能有Red,Blue,Green三种值,对于其他的值来说都是无效的.为引入枚举之前,我们一般使用其私有化其构造方法,然后在其内部实例化三个常量,然后再取值.这样不仅繁琐,而且带来了更多不安全的问题. package andy.enumtype.test; /** * @author Zhang,Tianyou * version:20

Java 枚举(enum) 常见用法

JDK1.5引入了新的类型--枚举.在 Java 中它虽然算个"小"功能,却给我的开发带来了"大"方便. 用法一:常量. 在JDK1.5 之前,我们定义常量都是: public static fianl.... .现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法. public enum Color { RED, GREEN, BLANK, YELLOW } 简单使用public class B {     public st

Java中Enum枚举的使用

注意项: 1.在switch中使用枚举能使代码的可读性更强. 2.如果要自定义方法,那么必须在enum实例序列的最后添加分号.而且Java要求必须先定义enum实例. 3.所有的枚举都继承自java.lang.Enum类,由于Java不支持多继承,所以枚举对象不能再继承其他类. 4.如果想让枚举对应值,那么要写构造方法,也可以再覆盖toString()方法

java 枚举(enum)学习

之前没有用过枚举,不懂.今天找了些资料学习了,现在总结如下:(希望高手看到后批评指教) 枚举的作用: 1.限定某一类型的取值范围. 2.不再写public static final...(如果取值范围太广,就太麻烦了),但最终enum还是要转化成class类型,还是会加public static final... 一段代码说明为什么java要有enum类型: package good.good.study; public class EnumStudy2 { public static void

查漏补缺——java枚举(enum)

刚学完java,为了巩固自己的知识和为别人提供一些微末的帮助决定开通博客,求各位大牛们指出我的错误,也希望我的总结可以对别人有帮助. enum的全称是enumeration,是JDK1.5引入的新特性,同时”泛型“也是这一阶段,下一次总结. 1.为什么要创建枚举类型? 答:在编程过程中经常可以遇见数据稳定而且有限的一组数据,比如四季{春,夏,秋,冬}: 而当我们选择一个季节的时候只能四季四个值里选择一个,所以枚举类型是类型安全的,如果使用顶以外的值会编译出错.(例子) package based

Java枚举类enum详解

枚举类enum是JDK1.5引入的,之前都是用public static final int enum_value来代替枚举类的.枚举类enum是一种特殊的类,它默认继承了类java.lang.Enum.和其它普通类一样,enum同样可以有成员变量.方法.构造器,也可以实现一个或多个接口,区别是: 如果有构造器,必须用private修饰. 枚举类不能派生子类. 枚举类所有的实例必须在第一行显示定义.系统会自动给这些实例加上public static final修饰,无须程序员显示定义. 枚举类默