小简博客 - 小简的技术栈,专注Java及其他计算机技术、互联网技术教程 (ideaopen.cn)

枚举类

如何创建

首先,从名字就可以看出,枚举是一个类,那么我们就可以直接在创建时选择枚举就可以。

或者我们也可以在普通类前面加上enum关键词。

public enum Week {
   MON,TUE,WED,THU,FRI,SAT,SUN
}

然后格式就是使用隔开。

使用枚举

  • values() 返回枚举类中所有的值。

  • ordinal()方法可以找到每个枚举常量的索引,就像数组索引一样。

  • valueOf()方法返回指定字符串值的枚举常量。

    1. 该方法为静态方法,调用者为枚举类,不是枚举值;

    2. 该方法形参只要一个String类型的值即可,并且该String值为枚举值对应的名称,即toString()方法返回的值(比如枚举类为SPRING,对应的名称就是"SPRING"),所以肯定是需要双引号的;

扩展方法

  • compareTo(E o)方法:则是比较枚举的大小,注意其内部实现是根据每个枚举的ordinal值大小进行比较的。

  • name()方法与toString():几乎是等同的,都是输出变量的字符串形式。

  • getDeclaringClass(): 返回该枚举变量所在的枚举类。

使用示例

首先我们定义了一个枚举类,在Week2包里面。

创建一个测试类,代码如下,我将常用方法挨个使用了一遍。

package Week2;

public class EnumTest {
   public static void main(String[] args) {
       //返回枚举类Week2.Week中的值
       System.out.println(Week.MON);
       //values()方法返回枚举类Week2.Week中指定索引的值
       System.out.println(Week.values()[0]);
       //找到枚举类Week2.Week中值为MON的索引
       System.out.println(Week.MON.ordinal());
       //返回指定字符串的枚举常量
       System.out.println(Week.valueOf("MON"));
       //枚举大小比较
       System.out.println(Week.MON.compareTo(Week.TUE));
       //枚举name()方法
       System.out.println(Week.MON.name());
       //枚举toString()方法
       System.out.println(Week.MON.toString());
       //枚举getDeclaringClass()方法
       System.out.println(Week.MON.getDeclaringClass());
       //遍历枚举类Week2.Week
       for (Week day : Week.values()) {
           System.out.print(day+" ");
      }
  }
}

运行后结果如下。

作用请挨个代码对照输出。

//values()方法返回枚举类Week2.Week中指定索引的值
System.out.println(Week.values()[0]);

这个方法的话,values()方法如果不在后面使用[索引下标],那么他将会输出一串地址,而不是值,后面的[ ]里面加上下标就可以输出对应值了。

最新文章

  1. 总结项目开发中用到的一些css\html技巧
  2. hw 要的是螺丝钉
  3. Git学习笔记——一个NB的分布式版本控制系统
  4. unsigned char 无符号整形 减法运算
  5. django 创建数据库表的linux命令
  6. Python 数据类型
  7. 实验三——SDRAM
  8. Lombok(1.14.8) - @Log
  9. HtmlTestRunner二次封装(TestRunner.py)
  10. Android客户端与服务端交互之登陆示例
  11. STL 源代码分析 算法 stl_algo.h -- pre_permutation
  12. 【转】DHCP协议详解
  13. 输入和输出--java序列化机制
  14. docker教程
  15. python-迭代器、生成器、内置函数及面向过程编程
  16. Xamarin Essentials教程地理定位Geolocation
  17. 介绍三款串口监控工具:Device Monitoring Studio,portmon,Comspy
  18. 最全最详细:ubuntu16.04下linux内核编译以及设备驱动程序的编写(针对新手而写)
  19. C++ 关于 CMFCPropertyGridCtrl 的使用方法 之二 (原创)
  20. Grape简介

热门文章

  1. Apache+tomcat实现应用服务器集群
  2. java == 和 equals
  3. 什么是 Mybatis?
  4. SpringBoot Jpa 双数据源mysql + oracle + liquibase+参考源码
  5. Mybatis有哪些执行器?
  6. NULL 是什么意思 ?
  7. 学习openldap03
  8. MyBatis Plus 2.3 个人笔记-01-代码生成器
  9. Python - random库介绍
  10. OpenCV+QT5在Window下的环境配置记录