枚举类型 用法

有时候,变量的取值只在一个有限的集合内。比如衣服的尺寸只有小、中、大、超大四种。当然,可以将这些尺寸分别编码为1,2,3,4。但这样存在着一定隐患,因为可能某个变量中保存了一个错误的值,比如0。为了避免这种隐患,枚举类型出现了。

于是,衣服的尺寸可以这样定义:

enum Size{SMALL,MEDIUM,LARGE,EXTRA_LARGE};

实际上,这个声明,定义了一个类,以及四个实例。因此,在比较两个枚举类型值的时,直接用==,不要用equals。

枚举类中可以定义构造方法、普通方法、变量。构造方法只在构造枚举变量的时候被调用。

变量可以这样声明:

Size s = Size.MEDIUM;

s引用了对象Size.MEDIUM,也可以设为null,表示没有设置任何值

例子

public enum Size{

    SMALL("S"),MEDIUM("M"),LARGE("L"),EXTRA_LARGE("XL");

    private String abbreviation;

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

    public String getAbbreviation(){return abbreviation;}

}

所有的枚举类型都是Enum的子类。

这个类中最有用的方法是toString()。Size.SMALL.toString()返回“SMALL”

静态方法valueOf()可以通过常量名返回实例。Size s = Enum.valueOf(Size.class,"SMALL");

静态方法values()返回一个数组,包含全部枚举值。例如:Size[] values = Size.values();

ordinal()方法返回enum声明中枚举常量的位置,从0开始计数。

例子

public class TestEnum {

    /*最普通的枚举*/

    public enum ColorSelect {

        red, green, yellow, blue;   

    }

 

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

    public enum Season {

        // 枚举列表必须写在最前面,否则编译出错

        winter, spring, summer, fall;

 

        private final static String location = "Phoenix";       

 

        public static Season getBest() {

            if (location.equals("Phoenix"))

                return winter;

            else

                return summer;

        }

    }

    /*还可以有构造方法*/

    public enum Temp {

        /*通过括号赋值,而且必须有带参构造器和一属性跟方法,否则编译出错

         * 赋值必须是都赋值或都不赋值,不能一部分赋值一部分不赋值

         * 如果不赋值则不能写构造器,赋值编译也出错*/

        absoluteZero(-459), freezing(32),boiling(212), paperBurns(451);

 

        private final int value;

        public int getValue() {

            return value;

        }

        //构造器默认也只能是private, 从而保证构造函数只能在内部使用

        Temp(int value) {

            this.value = value;

        }

    }

 

    public static void main(String[] args) {

        /*

         * 枚举类型是一种类型,用于定义变量,以限制变量的赋值 赋值时通过"枚举名.值"来取得相关枚举中的值

         */

        ColorSelect m = ColorSelect.blue;

        switch (m) {

        /*注意:枚举重写了ToString(),所以枚举变量的值是不带前缀的

          *所以为blue而非ColorSelect.blue

          */

 

   case red:

            System.out.println("color is red");

            break;

        case green:

            System.out.println("color is green");

            break;

        case yellow:

            System.out.println("color is yellow");

            break;

        case blue:

            System.out.println("color is blue");

            break;

        }

        System.out.println("遍历ColorSelect中的值");

        /*通过values()获得枚举值的数组*/

        for (ColorSelect c : ColorSelect.values()) {

            System.out.println(c);

        } 

 

   System.out.println("枚举ColorSelect中的值有:"+ColorSelect.values().length+"个");

 

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

  System.out.println(ColorSelect.red.ordinal());//0

  System.out.println(ColorSelect.green.ordinal());//1

  System.out.println(ColorSelect.yellow.ordinal());//2

  System.out.println(ColorSelect.blue.ordinal());//3

 

  /*枚举默认实现了java.lang.Comparable接口*/

  System.out.println(ColorSelect.red.compareTo(ColorSelect.green));

 

  System.out.println(Season.getBest());

 

    for(Temp t:Temp.values()){

            /*通过getValue()取得相关枚举的值*/

            System.out.println(t+"的值是"+t.getValue());

        }

    }

}

时间: 2024-10-18 12:44:06

枚举类型 用法的相关文章

c#枚举类型操作方法总结-1

关于枚举类型用法总结两点,分享如下: 1.  根据枚举值获取枚举值的描述信息,可以封装一个方法供调用: //  enumValue是传入的枚举值 public string GetEnumDescrption(Enum enumValue) { string value = enumValue.ToString(); FieldInfo field = enumValue.GetType().GetField(value); object[] objs = field.GetCustomAttr

enum枚举类型 的用法

1.作为数组下标使用 enun  box{pencil, ruler}; void main() { string s[2]; s[pencil]="pencil"; s[ruler]="ruler"; } 2.对于那些只有几种可能取值的一类变量,作为枚举类型的具体实例变量只能去它的几个枚举元素值. 具体用法可参见周纯洁的C语言课本P259.

C#中的枚举类型enum用法

定义一个简单的枚举类型:   enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri};        //这时候         Days.Sat = 0 ,后面依此递增. 当然也可以手动指定起始值:   enum Days {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri}; //这样就从1开始了. 枚举型的隐含类型为 int 型, 例如 int x=(int)Days.Sat ; 一点问题没有.据MSDN说枚举类型的隐含类型可以为除

Java枚举类型的用法

JDK1.5引入了新的类型——枚举.在 Java 中它虽然算个“小”功能,却给我的开发带来了“大”方便. 1.用法一:常量 在JDK1.5 之前,我们定义常量都是: public static fianl.... .现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法.而且枚举类型可以帮助我们检测许多的编译失误. 例如: package enumTest; public enum Color { RED,BLANK,YELLOW } 测试代码: package

【C++】枚举类型及其用法

C ++包含许多内置数据类型. 但是对于我们想要做的事来说,这些类型有时并不够用. 因此,C ++允许程序员创建自己的数据类型. 这些数据类型称为用户定义数据类型. 也许最简单的用户定义数据类型就是枚举类型(Enumerated Types). 枚举类型中每个可能的值都定义为符号常量(称为枚举器). 一.为什么用枚举? 在了解其语法之前,先看看枚举怎么个用途,是否有学的必要呢?其实枚举是很实用的一个工具,主要体现在代码阅读方面. 设想这样一个场景,一个项目,写了上千行,有些常量类型,只有几个固定

C#语言基础——结构体和枚举类型

结构体和枚举类型 一.结构体(struct) 结构类型是用户自己定义的一种类型,它是由其他类型组合而成的,可包含构造函数.常数.字段.方法.属性.索引器.运算符.事件和嵌套类型的值类型.结构在几个重要方面不同于类:结构为值类型而不是引用类型,并且结构不支持继承. 用结构的主要思想是用于创建小型的对象,如Point和FileInfo等等.这可以节省内存,因为没有如类对象所需的那样有额外的引用产生.例如,当声明含有成千上万个对象的数组时,这会引起极大的差异. 结构体是一个变量组,将一组变量放在一起,

Java enum(枚举)的用法详解(转)

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

Java的枚举类型

引用并转载于:http://blog.csdn.net/ishallwin/article/details/9440251 1.什么是枚举: 在实际编程中,往往存在着这样的“数据集”,它们的数值在程序中是稳定的,而且“数据集”中的元素是有限的. 例如:星期一到星期日七个数据元素组成了一周的“数据集”,春夏秋冬四个数据元素组成了四季的“数据集”. 在java中如何更好的使用这些“数据集”呢?因此枚举便派上了用场. 枚举是限定有限可能值的一种手段,使用枚举可以降低程序出错的几率,并可以提高代码的可读

浅谈java中的枚举类型(转)

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