数据类型:
枚举的应用场景:
当一个类中的对象是确定的时候,可以使用枚举,例如:一年的四季(春夏秋冬)、一年的12个月、星期1~星期7,这些都是可以一 一列举出来的。
重要属性:
1、name:表示当前枚举对象的名字。
2、name()方法:可以获取name属性。
2、ordinal:枚举对象在类中罗列的顺序,类似index从0开始。
4、ordinal()方法:可以获取枚举类中对象的序号。
3、valueOf():获取一个对应的枚举对象。
4、values():获取全部的枚举对象,返回一个数组。
5、compareTo():比较两个枚举对象,返回值是int。
我们可以在enum类中定义自己的属性或方法。
必须在enum类中第一行,描述一下枚举的样子,最后需要用分号结束。
在枚举类中可以创建构造方法,构造方法可以重载,构造方法只能用private修饰。
枚举类创建的过程中,自动帮我们创建枚举类型的对象。
代码示例:
没有枚举的时候,解决枚举的应用场景示例。
MyDay类:
package myenum;
public class MyDay {
//类似于单例模式
//私有构造方法
private MyDay(){}
//所有属性都是对象
public static final MyDay monday = new MyDay();
public static final MyDay tuesday = new MyDay();
public static final MyDay wednesday = new MyDay();
public static final MyDay thursday = new MyDay();
public static final MyDay friday = new MyDay();
public static final MyDay saturday = new MyDay();
public static final MyDay sunday = new MyDay();
//一般属性、一般方法可以随便设计
}
Test类:
package myenum;
public class Test {
public static void main(String[] args) {
//Day类中访问了一个对象,Day类中有七个对象
MyDay day = MyDay.monday;
}
}
枚举代码示例:
枚举类-Day:
package myenum;
public enum Day{
//描述了 7 个当前类的对象
monday("星期一",1),tuesday,wednesday,thursday,friday,saturday,sunday;
//定义的相关属性
private String name;
private int index;
//属性的 get/set 方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
//无参构造方法
Day() {
}
//有参构造方法
Day(String name, int index) {
this.name = name;
this.index = index;
}
}
Test类:
package myenum;
import java.util.Date;
public class Test {
public static void main(String[] args) {
Day day = Day.monday;
//day对象 除了继承自Object类外,还默认继承Enum类。默认继承Enum,间接继承Object
String name = day.name();
System.out.println(name);
//获取单个枚举对象
Day day1 = Day.valueOf("thursday");
System.out.println(day1);
//获取所有的枚举对象
Day[] days = Day.values();
for (Day value : days) {
System.out.println(value +"--"+value.ordinal());
}
Day friday = Day.friday;
friday.setName("星期五");
String name1 = friday.getName();
System.out.println(name1);
}
}