zoukankan      html  css  js  c++  java
  • 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;
            }
        }
    
    }

  • 相关阅读:
    C++笔记(2018/2/6)
    2017级面向对象程序设计寒假作业1
    谁是你的潜在朋友
    A1095 Cars on Campus (30)(30 分)
    A1083 List Grades (25)(25 分)
    A1075 PAT Judge (25)(25 分)
    A1012 The Best Rank (25)(25 分)
    1009 说反话 (20)(20 分)
    A1055 The World's Richest(25 分)
    A1025 PAT Ranking (25)(25 分)
  • 原文地址:https://www.cnblogs.com/clamp7724/p/11611186.html
Copyright © 2011-2022 走看看