Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 365|回复: 0

[枚举学习]Java Enum学习总结

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-28 23:55:54 | 显示全部楼层 |阅读模式
    1. 关于 java Enum:     学过 C/C++ 等语言的人,应该都对 Enum 类型略知一二。 Enum 一般用来表示一组相同类型的常量。如性别、日期、月份、颜色等。 对这些属性用常量的好处是显而易见的,不仅可以保证单例,且比较时候可以用 ”==” 来替换 equals , 是一种好的习惯。 JDK1.5 之前没有 Enum 这个类型,那时候一般用接口常量来替代。有了 JavaEnum 之后, 可以更贴近的表示这种常量。 2. 如何使用 Java Enum 简单的用法: JavaEnum 简单的用法一般用于代表一组常用常量,可用来代表一类相同类型的常量值。如:
    性别: public enum SexEnum {
        male , female ;
    } 颜色: public enum Color {
        RED , BLUE,GREEN,BLACK ;
    } 枚举对象里面的值都必须是唯一的。可以通过 Enum 类型名直接引用该常量,如 SexEnum.male,Color.RED. 复杂用法: Java 为枚举类型提供了一些内置的方法,同时枚举常量还可以有自己的方法。可以很方便的遍历枚举对象,看个下面的例子:  
    1. 代码一
    WeekDay.java :
    1. /**
    2. * @author yubing.linyb
    3. * 2009.7.29
    4. * 定义一个枚举类型,代表星期一到星期日的7个缩写常量
    5. * 同时还定义了枚举类型的属性day,该属性可以是final,也可是变量
    6. * 同时还定义了该枚举类型的一个方法printDay
    7. */
    8. public enum WeekDay {
    9. Mon("Monday"), Tue("Tuesday"), Wed("Wednesday"), Thu("Thursday"),
    10. Fri("Friday"), Sat("Saturday"), Sun("Sunday");
    11. /**定义枚举类型自己的属性**/
    12. private final String day;

    13. private WeekDay(String day) {
    14.      this.day = day;
    15. }
    16. /**定义枚举类型自己的方法**/
    17. public static void printDay(int i){
    18.      switch(i){
    19.       case 1: System.out.println(WeekDay.Mon); break;
    20.       case 2: System.out.println(WeekDay.Tue);break;
    21.       case 3: System.out.println(WeekDay.Wed);break;
    22.       case 4: System.out.println(WeekDay.Thu);break;
    23.       case 5: System.out.println(WeekDay.Fri);break;
    24.       case 6: System.out.println(WeekDay.Sat);break;
    25.       case 7: System.out.println(WeekDay.Sun);break;
    26.       default:System.out.println("wrong number!");
    27.      }
    28. }

    29. public String getDay() {
    30.      return day;
    31. }
    32. }
    复制代码
    2.代码二
    WeekDayTest.java:
    1. /**
    2. * @author yubing.linyb
    3. * 2009.7.29
    4. * 测试枚举类型WeekDay.
    5. */
    6. public class WeekDayTest {
    7.   public static void main(String args[]) {
    8.       for (WeekDay day : WeekDay.values()) {
    9.          System.out.println(day + "====>" + day.getDay());
    10.       }
    11.       WeekDay.printDay(5);
    12.   }
    13. }
    14. 输出结果为:
    15. Mon====>Monday
    16. Tue====>Tuesday
    17. Wed====>Wednesday
    18. Thu====>Thursday
    19. Fri====>Friday
    20. Sat====>Saturday
    21. Sun====>Sunday
    22. Fri
    23. 3.Java Enum 原理
    24. Java Enum类型的语法结构尽管和 java 类的语法不一样,应该说差别比较大。但是经过编译器编译之后产生的是一个class文件。
    25. 该class文件经过反编译可以看到实际上是生成了一个类,该类继承了java.lang.Enum
    26.    
    27.      .
    28. WeekDay (javap WeekDay 命令之后得到的内容如下 ( 去掉了汇编代码 ) :
    29. public final class WeekDay extends java.lang.Enum{
    30.     public static final WeekDay Mon;
    31.     public static final WeekDay Tue;
    32.     public static final WeekDay Wed;
    33.     public static final WeekDay Thu;
    34.     public static final WeekDay Fri;
    35.     public static final WeekDay Sat;
    36.     public static final WeekDay Sun;
    37.     static {};
    38.     public static void printDay(int);
    39.     public java.lang.String getDay();
    40.     public static WeekDay[] values();
    41.     public static WeekDay valueOf(java.lang.String);
    42. }
    43.    
    复制代码

       
         
         
          
          

            
          

            
          
         
       

      


    源码下载:http://file.javaxxz.com/2014/10/28/235554687.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-26 04:13 , Processed in 0.295013 second(s), 36 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表