• java


    对象个数固定且有限,可以一一列举出来

    本质是private的构造方法,加上public static final 属性;

    数据类型: enum 默认继承Enum

    所以 public enum EnumTest 后面不能跟extends继承其他类

    属性:

    name   枚举对象的名字

    ordinal  枚举对象的位置,类似index

    常用方法:

    valueOf() 通过给定的枚举名字获得枚举对象

    values 获得全部枚举对象,返回一个数组

    compareTo() 比较两个枚举对象

    toString 没有final修饰,可以重写。

    枚举也可以自己修改属性和方法

    1.必须在第一行描述枚举的内容,内容与构造方法格式一致

    2.构造方法必须为private

    3.其他和普通类基本一样。

    package enumTest;
    
    public enum EnumTest {//里面的成员都是EnumTest类型的变量,name()默认为Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Satday
        //必须在第一行描述内容,分号结尾
        Sunday("SundayName",1,1),Monday("MondayName",22,2),Tuesday("TuesdayName",33,3),Wednesday("WednesdayName",44,4),Thursday("ThursdayName",55,5),Friday("FridayName",66,6),Satday;
    
    
        public String name;  //Enum自身带name属性,private final String name;这个name是我自己定义的name,两个不是同一个东西。enum的自身的name是第一行里写的那些Sunday一类的,用.name()获得。
        private int index;
        public int age;
    
        public String getName(){
            return this.name;
        }
    
        private EnumTest(){ //这是默认的构造方法,两个构造方法都不加上的话,枚举内容默认为名字。加了这个是为了防止直接写名字(比如Satday)的内容失效。下面的那个构造方法,使得枚举内容也可以是:名字(name,age,index)格式。
        }
    
        private EnumTest(String name, int age, int index){ //枚举的构造方法必须是private,可以方法重载
            this.name = name;
            this.age = age;
            this.index = index;
        }
    }
    package enumTest;
    
    public class EnumTestMain {
    
        public static void main(String[] args) {
            EnumTest sun = EnumTest.Sunday;
            System.out.println("sun = " + sun);
    
            EnumTest mon = EnumTest.valueOf("Monday");//valueOf可以根据枚举内对象的name返回对应的对象
            System.out.println("mon.age = " + mon.age);//自定义属性age
            System.out.println("mon = " + mon.name());//Enum自带方法,返回对象名字
            System.out.println("mon = " + mon.getName());//自定义方法,返回自定义的name,与Enum的没有发生冲突,自己定义的这个name虽然和Enum的name重名了,但是并没有互相影响
    
            mon.name = "Monday修改后的name";
            System.out.println("mon = " + mon.name());//Enum自带方法,返回对象名字(enum自带的name)
            System.out.println("mon = " + mon.getName());//自定义方法,返回自定义属性name
    
    
    
    
            System.out.println("-------------------------------");//values把enum内容变成数组返回
            EnumTest[] eArr = EnumTest.values();
    
            for(EnumTest e: eArr){
                System.out.println(e.name());
            }
    
            System.out.println("-------------------------------");//枚举可以用switch判断
            switch(sun){
                case Sunday:
                    System.out.println("swtch 判断 sun = Sunday");
                    break;
                case Monday:
                    System.out.println("swtch 判断 sun = Monday");
                    break;
                case Tuesday:
                    System.out.println("swtch 判断 sun = Tuesday");
                    break;
                case Wednesday:
                    System.out.println("swtch 判断 sun = Wednesday");
                    break;
                case Thursday:
                    System.out.println("swtch 判断 sun = Thursday");
                    break;
                case Friday:
                    System.out.println("swtch 判断 sun = Friday");
                    break;
                case Satday:
                    System.out.println("swtch 判断 sun = Satday");
                    break;
            }
        }
    
    }

  • 相关阅读:
    Win32汇编对话框资源的综合应用
    linux下svn服务器搭建以及相关问题解决方案
    a+++b 在编译基础上的讨论
    BHO API HOOK Wininet基于IE编程的一些资料
    二维数组和二级指针
    深信服电话面试
    C和C++中的void*
    MySQL学习笔记:调用存储过程或函数报1418错误
    MySQL学习笔记:limit
    MySQL学习笔记:时间差
  • 原文地址:https://www.cnblogs.com/clamp7724/p/11611186.html
Copyright © 2020-2023  润新知