黑马程序员--枚举

---------- ---------- ASP.Net+Android+IOS开发、<A">---------- .Net培训、期待与您交流!">---------- ----------

黑马程序员――枚举

一、  枚举是什么?

1.  枚举就是要让其个类型的变量的取值只能是若干个固定的值中的一个,否则编译器报错。枚举可以让编译器在编译时就可以控制源程序中赶写的非法值,普通变量的方式在开发阶段无法实现这一目标。

2.  当枚举中只有一个成员时,就可以作为一种单例的实现的方式。

3.  枚举相当于一个类,其中也可以定义构造方法,成员变量,普通方法和抽象方法

4.  枚举中的元素列表只用逗号隔开,不写其他方法时,结尾处可不加分号,若有方法,必须以分号结尾

5.  枚举元素必须位于枚举体中的最开始部分,枚举元素列表后要有分号与其他成员分隔,把枚举中成员放在枚举元素前,编译器会报告错误。

二、  用普通类实现枚举功能

package com.itheima.note;
/**
 *将构造方法私有,不允许调用者new新的对象
 *
 */
public abstract class WeekDay {
  private WeekDay(){}
  public abstract WeekDay nextDay();
  public static final WeekDay SUN = new WeekDay(){
   public WeekDay nextDay(){
      return MON;
    }
  };
  public static final WeekDay MON = new WeekDay(){
    public WeekDay nextDay(){
      return TUE;
    }
  };
  public static final WeekDay TUE = new WeekDay(){
    public WeekDay nextDay(){
      return WED;
    }
  };
  public static final WeekDay WED = new WeekDay(){
    public WeekDay nextDay(){
      return THU;
    }
  };
  public static final WeekDay THU = new WeekDay(){
    public WeekDay nextDay(){
      return FRI;
    }
  };
  public static final WeekDay FRI = new WeekDay(){
    public WeekDay nextDay(){
      return SAT;
    }
  };
  public static final WeekDay SAT = new WeekDay(){
    public WeekDay nextDay(){
      return SUN;
    }
  };
  public String toString(){
    if(this == SUN){
      return  "SUN";
   
    }else if(this == MON){
      return "MON";
    
    }else if(this == TUE){
      return "TUE";
    
    }else if(this == WED){
      return "WED";
    
    }else if(this == THU){
      return "THU";
    
    }else if(this == FRI){
      return "FRI";
     
    }else if(this == SAT){
      return "SAT";
   
    }else{
      return "SUN";

  }  
  } 
}

三、  枚举的基本应用


public class EnumTest {

  public EnumTest() {
  }

  public static void main(String[] args) {
      Lamp firstLamp = Lamp.RED;
    System.out.println(firstLamp.nextLamp());
    System.out.println(Lamp.GREEN.nextLamp());
    System.out.println(Lamp.YELLOW.nextLamp());
  
    WeekDay day1 = WeekDay.SUN;
    System.out.println(day1.name());
    System.out.println(day1.ordinal());
    System.out.println(WeekDay.valueOf("FRI").toString());
    System.out.println(WeekDay.values().length);

  }
  public enum WeekDay{
    SUN(2),MON,TUE,WED,THU,FRI(5),SAT;
    private WeekDay(){System.out.println("first");}
    private WeekDay(int day){System.out.println("second");}
  }
  public enum TrafficLamp{//带构造方法的实现枚举
    RED(30){
   public TrafficLamp nextLamp() {
      return GREEN;
     } },GREEN(35){
    public TrafficLamp nextLamp(){
      return YELLOW;
    } },YELLOW(5){
    public TrafficLamp nextLamp(){
      return RED;
    } };
   private TrafficLamp(){}//不用写,有默认的无参构造函数
   public abstract TrafficLamp nextLamp();
   private int time;
   private TrafficLamp(int time){}  
 }
  public enum TrafficLamp1{//默认无参数构造方法的枚举
    RED,GREEN,YELLOW;
    public TrafficLamp1 nextLamp(){
      if(this == RED){
        return GREEN;
     }else if(this == GREEN){
       return YELLOW;
     }else {
       return RED;
     }
   }
 }

}

----------- ----------- ASP.Net+Android+IOS开发、<A">----------- .Net培训、期待与您交流!">----------- -----------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值