目录
1:什么是枚举
枚举是一个帖特殊的类,用来表示一组常量。Java 枚举类使用 enum 关键字来定义,各个常量使用逗号 , 来分割。
2:枚举的用法
枚举和final的比较。final可以重新赋值(重新引用)。枚举不行,枚举可以表示结构化的数据,代码少,利于管理。
2.1:final和枚举类
//1:final修饰
public class Colar {
static final String red="red";
static String bule="blue";
}
//2:枚举
public enum Enum1 {
red,greeen,bule,aa;
}
//2.1:内部枚举类
public class Enum2 {
enum Enum22{
red,green,blue;
}
}
//2.3:复杂类型枚举
public enum Enum3 {
red(1, "1红色"), blue(2, "2蓝色"), green(3, "3绿色");
// 成员变量
private int index;//索引
private String name;//颜色
Enum3(int index, String name) {
this.index = index;
this.name = name;
}
//根据索引获取name
public static String getEnum(int index) {
for (Enum3 e : Enum3.values()) {
if (e.index == index) {
return e.getName();
}
}
return "输入枚举索引不存在";
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
2.2:测试方法
/**
* 以前的final修饰
* static final String red="red";
*/
@Test
public void t0() {
//以前的写法 final的静态常量
Colar.bule = "bule";
String bule = Colar.bule;
//final 修饰red 可以重新赋值
String red = Colar.red;
red="da";//red 重新赋值
System.out.println(bule);
System.out.println(red);
}
/**
* 不使用final
* Enum1枚举基础用法
*/
@Test
public void t1() {
Enum1 color = Enum1.red;
System.out.println(color);
//String a=Enum1.red;//禁止赋值 修改
System.out.println(Enum1.bule.toString());//转换为字符串
System.out.println(Enum1.greeen);//直接输出
System.out.println(Enum1.valueOf("red"));
}
/**
* Enum2枚举声明在内部类中
*/
@Test
public void t2() {
Enum2.Enum22 enum22 = Enum2.Enum22.blue;
System.out.println(enum22.blue.toString());//转换为string
System.out.println(Enum2.Enum22.valueOf("green"));
System.out.println(Enum2.Enum22.red);
}
/**
* Enum1
* for语句迭代枚举
*/
@Test
public void t3() {
for (Enum1 value : Enum1.values()) {
System.out.println("枚举的值:" + value);
System.out.println("枚举索引:" + value.ordinal());
}
}
/**
* Enum1
* switch语句迭代枚举
*/
@Test
public void t4() {
Enum1 enum1 = Enum1.greeen;
switch (enum1) {
case red:
System.out.println("红色");
break;
case greeen:
System.out.println("绿色");
break;
case bule:
System.out.println("蓝色");
break;
default:
System.out.println("原色不正确");
}
}
/**
* Enum3
* 枚举包含信息更多
* for语句迭代枚举
*/
@Test
public void t5() {
String a = Enum3.getEnum(4);
System.out.println(a);
}
/**
* switch
*/
@Test
public void swich1() {
int a = 3;
switch (a) {
case 10:
System.out.println("10");
break;
case 20:
System.out.println("20");
break;
default:
System.out.println("无效输入");
}
}
/**
* switch
* 不加break
* 会在满足条件之后 剩下的全部输出
* <p>
* 郑州2
* 郑州3
* 输入不合规范
*/
@Test
public void swich3() {
String a = "郑州2";
switch (a) {
case "郑州1":
System.out.println("郑州1");
case "郑州2":
System.out.println("郑州2");
case "郑州3":
System.out.println("郑州3");
default:
System.out.println("输入不合规范");
}
}