zoukankan      html  css  js  c++  java
  • 枚举(一)快速归类整型常数

    枚举类型是一种特殊的引用类型,它的声明和使用与类和接口有类似的地方,可以在其它类的内部声明,但不能在方法内部声明。

    每个枚举类型都隐含的继承了Enum抽象类,Enum又是Object类的子类,所以其方法即可被枚举类型调用。

    1.枚举类型的定义

    枚举类型声明使用enum关键字,罗列出所有可用值,这些值也称为枚举元素。

     1 enum WeekDay
     2 {
     3     SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY;
     4 }
     5 public class EnumDemo
     6 {
     7     public static void main(String[] args)
     8     {
     9         WeekDay rest = WeekDay.SUNDAY;//枚举名.枚举值
    10         System.out.println(rest);
    11     }
    12 }

    上述例子中,SATURDAY后面的;可以省略,但如果枚举中还声明了方法,则不可省略。

    2.凡被说明为WeekDay类型变量的取值,只能是枚举元素其中之一。而枚举变量的说明有以下三种方式:

    enum WeekDay{
        SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY
    };
    enum WeekDay today;//先定义,后说明
    enum WeekDay{
        SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY
    }today;//定义的同时说明
    enum {
        SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY
    }today;//定义无名枚举

    这三种方式在Eclipse中是报错的,但书上确实是这么讲的,还没弄明白是怎么回事,等弄懂了再回来修改。

    3.枚举实用——switch语句

     1 enum WeekDay{
     2     SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY
     3 };
     4 public class EnumDemo
     5 {
     6     public static void main(String[] args)
     7     {
     8         WeekDay today = WeekDay.MONDAY;
     9         switch(today)
    10         {
    11         case SUNDAY:
    12         {
    13             System.out.println("今天是星期日!");
    14             break;
    15         }
    16         case MONDAY:
    17         {
    18             System.out.println("今天是星期一!");
    19             break;
    20         }
    21         case TUESDAY:
    22         {
    23             System.out.println("今天是星期二!");
    24             break;
    25         }
    26         case WEDNESDAY:
    27         {
    28             System.out.println("今天是星期三!");
    29             break;
    30         }
    31         case THURSDAY:
    32         {
    33             System.out.println("今天是星期四!");
    34             break;
    35         }
    36         case FRIDAY:
    37         {
    38             System.out.println("今天是星期五!");
    39             break;
    40         }
    41         case SATURDAY:
    42         {
    43             System.out.println("今天是星期六!");
    44             break;
    45         }
    46         }
    47     }
    48 }

    4.枚举类型的方法

    每种枚举类型E都有两个自动生成的静态方法:

    public static E[] values():返回一个包含了所有枚举常量的数组(按照声明顺序存储)。

    WeekDay[] allweek = WeekDay.values();//用枚举数组读取枚举中的值
    for(WeekDay aweek:allweek)
    {
        System.out.println(aweek);//遍历数组输出
    }

    public static E valueOf(String name):返回指定名字的枚举常量。(若无,则抛出IllegalArgumentException异常。)

    WeekDay w = WeekDay.valueOf("TUESDAY");
    System.out.println(w);

    调用父类Enum类的方法:

    public int ordinal():返回枚举常量的序数。

    WeekDay[] allweek = WeekDay.values();
    for(WeekDay aweek:allweek)
    {
        System.out.println(aweek.name()+"-->"+aweek.ordinal());//输出各个枚举元素的编号
    }

    Enum类中还有很多实用的方法,如clone()、name()等,不一一介绍了。

  • 相关阅读:
    java里如何实现对数组中的元素反转[4, 1, 8, 7, 3, 8, 2]变成 [2, 8, 3, 7, 8, 1, 4]
    牛客网Java刷题知识点之插入排序(直接插入排序和希尔排序)、选择排序(直接选择排序和堆排序)、冒泡排序、快速排序、归并排序和基数排序(博主推荐)
    [转]ASP.NET Web API对OData的支持
    [转]Work With Odata in Web API: Create Your First Odata Service
    [转]如何在 .Net Framework 4.0 项目上使用 OData?
    [转]Asp.Net Web API 2第十七课——Creating an OData Endpoint in ASP.NET Web API 2(OData终结点)
    [转]使用WCF 4.0 构建 REST Service
    [转]构建基于WCF Restful Service的服务
    [转]asp.net5中使用NLog进行日志记录
    [转]浅谈 .NET Framework 与 .NET Core 的区别与联系
  • 原文地址:https://www.cnblogs.com/wxywxy/p/6771003.html
Copyright © 2011-2022 走看看