基本概念
数据类型:
- 基本数据类型:有8个
- 引用数据类型:数组[]、类class、抽象类abstract class、接口、枚举enum、注解@interface
枚举的应用场景:
当一个类中的对象是确定的时候,可以使用枚举,例如:一年的四季(春夏秋冬)、一年的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,间接继承ObjectString 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);}
}