Java语言程序设计——篇九(2)

在这里插入图片描述

     🌿🌿🌿跟随博主脚步,从这里开始→博主主页🌿🌿🌿

枚举类型的定义

 [修饰符] enum 枚举类型名
  {
    [public static final]枚举成员;  //只能写在第一行
    其他成员;
    [private]构造方法
    方法
  }
  • 修饰符可以是public、private、internal
  • 枚举类型名有两层含义:一是作为枚举名使用;二是表示枚举成员的数据类型。枚举成员也称为枚举实例或枚举对象。
  • 枚举默认继承自java.lang.Enum类。
  • 创建枚举对象不能使用new( )运算符,而应直接将枚举成员赋值给枚举对象。

枚举类型的方法

  • 每个枚举类型的成员都可以看作是Enum类的实例,这些枚举成员默认被final public static修饰。
  • 访问枚举类型的成员
       枚举名.枚举成员
       枚举名.valueOf( 参数)
  • 因为枚举也是一种类,所以它具有与其他类几乎相同的特性,因此可以定义枚举的属性、构造方法以及方法。
  • 枚举类常用方法
方法说明
public static E[] values( )返回枚举类型的数组,包含了枚举的所有枚举成员
public static E valueOf(String str)返回名称为str的枚举成员
public final int compareTo (E o)返回当前枚举成员与参数枚举成员o在定义时顺序的比较结果
Public final class getDeclaringClass()返回对应的枚举常量的枚举类型的类对象
public final String name( )返回枚举常量的名字
public final int ordinal ( )返回枚举成员在枚举中的序号(0开始)
public String toString( )返回枚举成员的名称

实战演练

【例】定义一个枚举类型,然后输出枚举成员的名称和对应的序号。

enum Direction
{ EAST,SOUTH,WEST,NORTH }
public class EnumDemo{
  public static void main(String[] args)
  {
    Direction dir=Direction.EAST;
	System.out.print(dir);
	for(Direction d:Direction.values())
      System.out.println("序号:"+d.ordinal()+" 的值为"+d.name());
  }
}

在这里插入图片描述

枚举在switch中的应用

  • 枚举类型有一个特别实用的特性,它可以在switch语句中使用。
  • java.time.DayOfWeek是一个枚举类型,其中包括一周的7天,分别为MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY、SATURDAY和SUNDAY,序号从0到6。
  • EnumSwitch.java程序在switch结构中使用DayOfWeek枚举。

实战演练

【例】 java.time.DayOfWeek是一个枚举类,一周7天,序号分别是0-6

import java.time.DayOfWeek;
public class EnumSwitch {
	 public static void describe (DayOfWeek day) {
	      switch (day) {
		     case MONDAY: 
	       System.out.println("Mondays are bad.");
			     break;
		     case FRIDAY: 
	    System.out.println("Fridays are better.");
			      break;
	         case SATURDAY:
		    case SUNDAY: 
	     System.out.println("Weekends are best.");
			       break;
			       		     default:
	System.out.println("Midweek days are so-so.");
			    break;
	       }
	   }	     
public static void main(String[] args) {
	    	 DayOfWeek firstDay = DayOfWeek.MONDAY;
	         describe (firstDay);
	     DayOfWeek thirdDay = DayOfWeek.WEDNESDAY;
	         describe (thirdDay);
	      DayOfWeek seventhDay = DayOfWeek.SUNDAY;
	         describe(seventhDay); 
	    }
}	

运行结果:
在这里插入图片描述

枚举类的构造方法

  • 枚举的构造方法只是在构造枚举实例值时被调用。每一个枚举实例值都是枚举的一个对象,因此创建每个枚举实例时都需要调用该构造方法。

实战演练

【例】 定义color枚举,包含四种颜色,声明两个private成员变量(name颜色名字、index索引)

package com;
public enum Color {
RED("红色", 1), GREEN("绿色", 2), WHITE("白色", 3), YELLOW("黄色", 4);
	   private String name;
	   private int index;
 	   private Color(String name, int index) {
	       this.name = name;
	       this.index = index;
	   }
 	   public static String getName(int index) {
	       for (Color c : Color.values()) {
	           if (c.getIndex() == index) {
	               return c.name;
	           }
	       }
		return null;
	   }
	   public String getName() {
	       return name;
	   }
	   	  public void setName(String name) {
	       this.name = name;
	   }
	   public int getIndex() {
	       return index;
	   }
	   public void setIndex(int index) {
	       this.index = index;
	   }
	  @Override
	   public String toString() {
	       return this.name + "_" + this.index;
	   }
	   public static void main (String[] args) { 
	      Color c = Color.RED;          // 自动调用构造方法
	      System.out.println(c.toString());	// 输出:1-红色
	  }
	}

}	 	

博主用心写,读者点关注,互动传真情,知识不迷路

  • 43
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值