枚举类
枚举是从jdk1.5开始引入的,引入新的类型--枚举,枚举指由一组固定的常量组成,属性就是常量,java中的每一个枚举都继承自java.lang.Enum类,当定义一个枚举类型时,每一个类型的成员都可以看作是Enum类的实例,这些枚举成员默认为 public static final 修饰,当使用枚举成员时,直接使用枚举名称调用成员即可。
如何声明枚举类型,和枚举常量?
//创建一个性别的枚举
public enum Gender{
//属性就是常量
男,女;
//这种创建的好处是?
//1.类型安全 2.易于输入 3.代码清晰 4.可读性强大
}
思考一下,我们怎么样用上面这个枚举呢?
//创建一个人的类
public class Person{
//属性
private String name;//姓名
private Gender gender;//性别
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Gender getGender() {
return gender;
}
public void setGender(Gender gender) {
this.gender = gender;
}
}
测试枚举类
public class Test{
public static void main(String[] agrs){
//创建人的对象
Person person = new Person();
//怎么给属性赋值
person.setName("小丽");
person.setGender(Gerson.女);
//赋值枚举类型,因为Gerson是枚举类型
//输出信息
System.out.println("名字是:"+person.getName()+"性别:"+person.getGender());
}
}
练习题
为课程三个单元定义枚举:U1,U2,U3分别是 第一,第二,第三单元,编程输出每个单元的学习目标
public enum Course{
U1,U2,U3;//代表三个单元
}
测试单元类
public class Test{
public static void main(String[] args){
Scanner sc=new Scanner(system.in);
System.out.println("请输入1,2,3,");
int num=sc.nexInt();
//给三个单元定义一个统一的变量
CourseUns u;
//给三个单元赋值
if(num==1){
u=Course.u1;
}else if(num==2){
u=Course.U2;
}else {
u=Course.u3;
}
//这一题主要是锻炼大家用枚举类型作为switch里面的条件,来执行相应的操作
switch(u){
case U1:
System.out.println("第一单元成绩");
break;
case U2:
System.out.println("第二单元成绩");
break;
case U1:
System.out.println("第三单元成绩");
break;
default:
break;
}
}
}
Enum类的常用方法
例题一
values():以数组的形式返回枚举类型的所有成员
通过调用枚举类型实例的values()方法可以将枚举的所有成员以数组形式返回,也可以通过该方法获取枚举的成员。
下面的示例创建一个包含3个成员的枚举类型Colour颜色类,然后调用values()方法输出这些成员。
public enum Color {
//定义枚举类型
YELLOW, RED, GREEW;
}
public static void main(String[] args){
for(int i=0;i<)public static void main(String[] args) {
for (int i = 0; i < Color.values().length; i++) {
System.out.println("枚举成员:" + Color.values()[i]);
}
}
}
/*
枚举成员:YELLOW
枚举成员:RED
枚举成员:GREEW
*/
2.ordinal() 获取枚举成员的索引为位置
通过枚举类型实例的ordinal()方法可以获取一个成员在枚举的索引的索引位置。下面的实例创建一个3个成员的枚举类型Color类,然后调用ordinal()方法输出成员及对应索引位置
public enum Color {
//定义一个枚举类
GREEN,YELLOW,RED;
}
public class Test {
public static void main(String[] args) {
for (int i = 0; i < Color.values().length; i++) {
System.out.println("索引" + Color.values()[i].ordinal() + ",值:" + Color.values()[i]);
}
}
}
/*
索引0,值:GREEN
索引1,值:YELLOW
索引2,值:RED
*/