java-枚举

本文介绍了Java中的枚举类型,包括枚举的定义、枚举常量的获取、在switch语句中的使用、枚举成员的特性以及values()、ordinal()和valueOf()等方法的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

Java 枚举是一个特殊的类,一般表示一组常量.比如:一个星期的 7 天,一年的 4 个季节,方向有上下左右等等。

Java 枚举类关键字:enum 各个常量使用逗号 , 来分割.

枚举定义

例如定义枚举类:

enum Color 
{ 
    RED, YELLOW, BLUE; 
} 

枚举类 Color 颜色常量有 RED, YELLOW, BLUE,分别代表红,黄,蓝。

使用实例:

enum Color 
{ 
    RED, YELLOW, BLUE; 
} 
  
public class Test { 
    public static void main(String[] args) { 
        Color c = Color.YELLOW; 
        System.out.println(c); 
    } 
}

执行以上代码输出:

YELLOW

枚举类还可以声明在类中:

public class Test {
 
    public static void main(String[] args) { 
        Color c = Color.YELLOW; 
        System.out.println(c); 
    } 

	enum Color 
	{ 
    	RED, YELLOW, BLUE; 
	} 
}

执行以上代码输出:

YELLOW

举获枚取元素

可以使用 for 语句来迭代枚举元素:

public class Test{ 
	enum Color 
	{ 
   	 RED, YELLOW, BLUE; 
	} 
	
  public static void main(String[] args) { 
    for (Color c: Color.values()) {
      System.out.println(c);
    }
  } 
}

执行以上代码输出:

RED
YELLOW
BLUE

switch 中使用枚举

枚举类常应用于 switch 语句中:

enum Color 
{ 
    RED, YELLOW, BLUE; 
} 
public class Test{
  public static void main(String[] args) {
    Color c= Color.RED;

    switch(c) {
      case RED:
        System.out.println("红色");
        break;
      case YELLOW:
         System.out.println("黄色");
        break;
      case BLUE:
        System.out.println("蓝色");
        break;
    }
  }
}

执行以上代码输出结果为:

红色

枚举成员

枚举跟普通类一样可以用自己的变量、方法和构造函数,构造函数只能使用 private 访问修饰符,所以外部无法调用。
枚举既可以包含具体方法,还可以包含抽象方法。 如果枚举类具有抽象方法,则枚举类的每个实例都必须实现它。

enum Color 
{ 
    RED, YELLOW, BLUE; 
  
    // 构造函数
    private Color() { 
        System.out.println("Constructor called for : " + this.toString()); 
    } 
    
    public void colorInfo() { 
        System.out.println("Universal Color"); 
    } 
} 
 
  
public class Test { 
    
    public static void main(String[] args) { 
        Color c = Color.BLUE; 
        System.out.println(c); 
        c.colorInfo(); 
    } 
} 

执行以上代码输出结果为:

Constructor called for : RED
Constructor called for : YELLOW
Constructor called for : BLUE
BLUE
Universal Color

values() / ordinal() / valueOf() 方法

enum 定义的枚举类默认继承了 java.lang.Enum 类,并实现了 java.lang.Seriablizable 和 java.lang.Comparable 两个接口。

values(), ordinal() , valueOf() 方法都来自 java.lang.Enum 类中:

  • values() :返回枚举类中所有的值。
  • valueOf() :方法返回指定字符串值的枚举常量。
  • ordinal() :方法可以找到每个枚举常量的索引,类似数组索引一样。
enum Color 
{ 
    RED, YELLOW, BLUE; 
} 
  
public class Test { 
    public static void main(String[] args) { 
        // 调用 values() 
        Color[] arr = Color.values(); 
        // 迭代枚举
        for (Color c : arr) { 
            // 查看索引
            System.out.println(c + "索引为:" + c.ordinal()); 
        } 
  
        // 使用 valueOf() 返回枚举常量
        System.out.println(Color.valueOf("BLUE")); 
        // 不存在的会报错 IllegalArgumentException
        // System.out.println(Color.valueOf("BLACK"));
    } 
} 

执行以上代码输出结果为:

RED 索引为: 0
YELLOW 索引为: 1
BLUE 索引为:
BLUE

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值