枚举
枚举是jdk1.5版本后新增的一种引用类型.
-
本质也是一个类
-
默认继承Enum类,除了valueOf外其他方法都是只能拿来用:被final修饰.
-
枚举类罗列的都是对象,底层自动为name赋值
-
想要写属性就必须在第一行标明对象的构造方法的整体结构
-
枚举的构造方法必须是私有的:
-
我们自己实现相应效果的时候就是类似单例模式
package com.li.changGe.enums;
public enum EnumDemo01 {
/**
* 枚举类罗列的都是对象,底层自动为name赋值
* 想要写属性就必须在第一行标明对象的构造方法的整体结构
*/
/**
* 枚举的构造方法必须是私有的:
* 我们自己实现相应效果的时候就是类似单例模式
*/
red("张三",1),greed,blue,yellow,black;
private EnumDemo01(){}
private EnumDemo01(String name,int ordinal){}
public static void main(String[] args) {
for(EnumDemo01 value:EnumDemo01.values()){
/**
* switch1.6后添加枚举类
* 1.7添加String
*/
/**
* 底层有两个属性name和ordinal(类似于索引)
*/
switch (value){
case red:
System.out.println("red"+red.ordinal());
break;
case yellow:
System.out.println("yellow"+yellow.ordinal());
break;
case greed:
System.out.println("greed"+greed.ordinal());
break;
case black:
System.out.println("black"+black.ordinal());
break;
}
}
/**
* 找不到参数就报错:非法参数异常
*/
EnumDemo01 red = EnumDemo01.valueOf("red");
/**
* 从首字符开始往后一个一个比,返回asc码的差值.
*/
System.out.println(red.compareTo(EnumDemo01.valueOf("greed")));//-1
System.out.println("aa".compareTo("aaaa"));//-2:少两个字符
}
}