zoukankan      html  css  js  c++  java
  • Java基础学习总结--枚举的简单使用

    一、枚举格式
    JDK1.5引入了枚举类型。枚举类型的定义包括枚举声明和枚举体。格式如下:

    enum 枚举名 {
    	枚举体(常量列表)
    }
    

    二、用法一:常量

    enum Direction{
    	FRONT,BEHIND,LEFT,RIGHT;
    }
    

    三、用法二:switch

    enum Season{
    	SPRING,SUMMER,AUTUMN,WINTER;
    }
    
    public class Temp {
    	public static void main(String[] args) {
    		int tag = new Random().nextInt(4);
    		Season season = Season.values()[tag];
    		
    		switch (season) {
    		case SPRING:
    			System.out.println("春天");
    			break;
    		case SUMMER:
    			System.out.println("夏天");
    			break;
    		case AUTUMN:
    			System.out.println("秋天");
    			break;
    		case WINTER:
    			System.out.println("冬天");
    			break;
    		}
    	}
    }
    

    四、用法三:向枚举中添加成员

    enum Season{
    	SPRING("春天"),SUMMER("夏天"),AUTUMN("秋天"),WINTER("冬天");
    	
    	//成员变量
    	private String name;
    	public static String character;
    	
    	//构造方法
    	private Season(String name) {
    		this.name = name;
    	}
    	
    	//普通方法
    	public void sayHello() {
    		System.out.println("我是"+this.name);
    	}
    	
    	public static void show() {
    		System.out.println(character);
    	}
    }
    
    enum Season{
    	SPRING {
    		@Override
    		void test() {
    			
    		}
    	},
    	SUMMER {
    		@Override
    		void test() {
    			
    		}
    	},
    	AUTUMN {
    		@Override
    		void test() {
    			
    		}
    	},
    	WINTER {
    		@Override
    		void test() {
    			
    		}
    	};
    	
    	//抽象方法
    	abstract void test();
    }
    

    五、用法四:覆盖枚举的方法

    下面给出一个toString()方法覆盖的例子。

    enum Season{
    	SPRING,SUMMER,AUTUMN,WINTER;
    	
    	String msg = "跑调大叔";
    	
    	@Override
    	public String toString() {
    		return msg;
    	}
    }
    

    六、用法五:实现接口

    interface TestDemo{
    	public void sayHello();
    	public void print();
    }
    
    enum Season implements TestDemo{
    	SPRING,SUMMER,AUTUMN,WINTER;
    	
    	//实现接口中的方法
    	@Override
    	public void sayHello() {
    		
    	}
    	
    	//实现接口中的方法
    	@Override
    	public void print() {
    		
    	}
    }
    

    七、注意事项

    1. 定义枚举类要用关键字enum;
    2. 所有枚举类都是Enum的子类。他们默认都是public static final修饰的;
    3. 枚举类的第一行上必须是枚举项,最后一个枚举项后的分号是可以省略的,但是如果枚举类有其他的东西,这个分号就不能省略。建议不要省略;
    4. 枚举类可以有构造器,但必须是private的,它默认的也是private的。如果有构造器,那么枚举项的用法比较特殊:枚举项("");
    5. 枚举类也可以有抽象方法,但是所有项必须重写该方法;
    6. 当你需要定义一组常量时,可以使用枚举类型。

    八、补充常用方法:

    name() :返回枚举的名称
    ordinal() :枚举的下标,下标从0开始
    valueOf(Class<T> enumType, String name) :获取枚举的对象
    
    还有两个方法,都是这两个方法不在api里面,编译的时候生成两个方法
    valueof(String name): 获取枚举对象
    values(): 获得所有枚举对象数组
    

    例1:已知枚举对象,获取枚举名称和下标

    public static void test01(){
    	Color c = Color.YELLOW;
    	String name = c.name();
    	int index = c.ordinal();
    	System.out.println(name+" "+index);
    }
    

    例2:已知枚举名称,获取枚举对象和下标

    public static void test02(){
    	String name = "GREEN";
    	Color c = Color.valueOf(name);
    	int index = c.ordinal();
    	System.out.println(name+" "+index);
    }
    

    例3:已知枚举下标,获取枚举对象和名称

    public static void test03(){
    	int index = 1;
    	Color[] cs = Color.values();
    	Color c = cs[index];
    	String name = c.name();
    	System.out.println(name+" "+index);
    }
    

    Java新手,如有错误,欢迎指正!

  • 相关阅读:
    菜鸟运维笔记:安装MySQL,PHP及phpMyAdmin
    在MyEclipse中统计项目行数
    工作已定,望悉
    经常使用算法之贪心
    leetcode
    程序猿的量化交易之路(20)--Cointrader之Assert实体(8)
    【MySQL】 查询某个数据库有多少张数据表
    【powerdesigner】将pdm或者cdm保存为普通图片格式
    【web maven】新建的项目 controller也有,从前台跳转后台 无法找到对应的controller
    【Java 新建项目】使用程序对新项目的各个实体 创建Dao、DaoImpl、Service、ServiceImpl层的文件
  • 原文地址:https://www.cnblogs.com/Java-biao/p/12591818.html
Copyright © 2011-2022 走看看