【JavaSE】Java基础语法(四十六):枚举

文章目录

  • 1. 概述
  • 2. 定义格式
  • 3. 枚举的特点
  • 4. 枚举的方法



在这里插入图片描述

1. 概述


枚举是一种特殊的数据类型,它列出了一组预定义的常量,并使用标识符来引用这些常量。枚举的用途很广泛,下面列举了几个常见的应用场景:

  • 管理常量:如果您需要在程序中使用一组固定不变的常量,建议使用枚举来管理这些常量。这样可以使得代码更加可读和易于维护。例如,你可以使用一个代表颜色的枚举,来管理程序中可能需要使用到的所有颜色。

  • 替代布尔值:如果某个函数或方法的返回值只有两种状态,True 或者 False,可以使用枚举来管理只有两种状态的结果,使代码具有更好的可读性和易维护性。枚举可以将 True 和 False 映射到你实际希望表示的含义。

  • 解析字符串:枚举常用于解析字符串并转换为相应的枚举值。对于从外部系统或文件读取的值,而我们必须将它们转换为特定的枚举值,将非常有用。

  • 代替整数常量:在以前,程序员经常使用“幻数”(即硬编码的数字)。现在推荐使用枚举来代替整数常量或“幻数”,这样可以使代码更加可读和易于维护。


2. 定义格式

  • 格式

    public enum s {
    	枚举项1,枚举项2,枚举项3;
    }
    注意: 定义枚举类要用关键字enum
    
  • 示例代码

    // 定义一个枚举类,用来表示春,夏,秋,冬这四个固定值
    public enum Season {
    	SPRING,SUMMER,AUTUMN,WINTER;
    }
    

3. 枚举的特点

  • 特点
    - 所有枚举类都是Enum的子类
    - 我们可以通过"枚举类名.枚举项名称"去访问指定的枚举项
    - 每一个枚举项其实就是该枚举的一个对象
    - 枚举也是一个类,也可以去定义成员变量
    - 枚举类的第一行上必须是枚举项,最后一个枚举项后的分号是可以省略的,但是如果枚举类有其他的东西,这个分号就不能省略。建议不要省略
    - 枚举类可以有构造器,但必须是private的,它默认的也是private的。
    枚举项的用法比较特殊:枚举(“”);
    - 枚举类也可以有抽象方法,但是枚举项必须重写该方法

  • 示例代码

    public enum Season {
    	SPRING("春"){
    		//如果枚举类中有抽象方法
    		//那么在枚举项中必须要全部重写
    		@Override
    		public void show() {
    			System.out.println(this.name);
    		}
    	},
    	
    	SUMMER("夏"){
    		@Override
    		public void show() {
    			System.out.println(this.name);
    		}
    	},
    
    	AUTUMN("秋"){
    		@Override
    		public void show() {
    			System.out.println(this.name);
    		}
    	},
    
    	WINTER("冬"){
    		@Override
    		public void show() {
    			System.out.println(this.name);
    		}
    	};
    
    	public String name;
    	//空参构造
    	//private Season(){}
    	
    	//有参构造
    	private Season(String name){
    		this.name = name;
    	}
    	//抽象方法
    	public abstract void show();
    }
    
    public class EnumDemo {
    	public static void main(String[] args) {
    		/*
    			1.所有枚举类都是Enum的子类
    			2.我们可以通过"枚举类名.枚举项名称"去访问指定的枚举项
    			3.每一个枚举项其实就是该枚举的一个对象
    			4.枚举也是一个类,也可以去定义成员变量
    			5.枚举类的第一行上必须是枚举项,最后一个枚举项后的分号是可以省略的,
    			但是如果枚举类有其他的东西,这个分号就不能省略。建议不要省略
    			6.枚举类可以有构造器,但必须是private的,它默认的也是private的。
    			枚举项的用法比较特殊:枚举("");
    			7.枚举类也可以有抽象方法,但是枚举项必须重写该方法
    		*/
    		//第二个特点的演示
    		//我们可以通过"枚举类名.枚举项名称"去访问指定的枚举项
    		System.out.println(Season.SPRING);
    		System.out.println(Season.SUMMER);
    		System.out.println(Season.AUTUMN);
    		System.out.println(Season.WINTER);
    		//第三个特点的演示
    		//每一个枚举项其实就是该枚举的一个对象
    		Season spring = Season.SPRING;
    	}
    }
    

4. 枚举的方法

  • 方法介绍
    【JavaSE】Java基础语法(四十六):枚举_第1张图片

  • 示例代码

public enum Season {
	SPRING,SUMMER,AUTUMN,WINTER;
}

public class EnumDemo {
	public static void main(String[] args) {
		// String name() 获取枚举项的名称
		String name = Season.SPRING.name();
		System.out.println(name);
		System.out.println("-----------------------------");
		// int ordinal() 返回枚举项在枚举类中的索引值
		int index1 = Season.SPRING.ordinal();
		int index2 = Season.SUMMER.ordinal();
		int index3 = Season.AUTUMN.ordinal();
		int index4 = Season.WINTER.ordinal();
		System.out.println(index1);
		System.out.println(index2);
		System.out.println(index3);
		System.out.println(index4);
		System.out.println("-----------------------------");
		// int compareTo(E o) 比较两个枚举项,返回的是索引值的差值
		int result = Season.SPRING.compareTo(Season.WINTER);
		System.out.println(result);//-3
		System.out.println("-----------------------------");
		// String toString() 返回枚举常量的名称
		String s = Season.SPRING.toString();
		System.out.println(s);
		System.out.println("-----------------------------");
		// static  T valueOf(Class type,String name)
		// 获取指定枚举类中的指定名称的枚举值
		Season spring = Enum.valueOf(Season.class, "SPRING");
		System.out.println(spring);
		System.out.println(Season.SPRING == spring);
		System.out.println("-----------------------------");
		// values() 获得所有的枚举项
		Season[] values = Season.values();
		for (Season value : values) {
			System.out.println(value);
		}
	}
}

在这里插入图片描述

你可能感兴趣的:(Java,java,spring,开发语言,枚举)