- 小项目:判断今天是否是休息日
代码一:
class Student{
private int weekday;
public int getWeekday() {
return weekday;
}
public void setWeekday(int weekday) {
this.weekday = weekday;
}
}
public class 枚举 {
public static void main(String[] args) {
Student s = new Student();
s.setWeekday(1);
int res = s.getWeekday();
if(res == 6 || res == 7)
System.out.println("Today is holiday !");
else
System.out.println("workday");
}
}
缺点:当输入8时,仍然判断为工作日,与实际逻辑不符
而且只是输入数字不知道周几
代码二
class Weekday{
static final int MONDAY = 1;
static final int TUESDAY = 2;
static final int WENDESDAY = 3;
static final int THURSDAY = 4;
static final int FRIDAY = 5;
static final int SATURDAY = 6;
static final int SUNDAY = 7;
}
class Student{
private int weekday;
public int getWeekday() {
return weekday;
}
public void setWeekday(int weekday) {
this.weekday = weekday;
}
}
public class 枚举 {
public static void main(String[] args) {
Student s = new Student();
s.setWeekday(Weekday.SATURDAY);
int res = s.getWeekday();
if(res == 6 || res == 7)
System.out.println("Today is holiday !");
else
System.out.println("workday");
}
}
优点:将数字7和周日相联系起来
缺点:输入数字时,不论是7还是8,仍然可以输出,不符合逻辑,不安全
代码三
class Weekday{
static final Weekday MONDAY = new Weekday();//;类类型(引用数据类型),需要创建对象
static final Weekday TUESDAY = new Weekday();
static final Weekday WENDESDAY = new Weekday();
static final Weekday THURSDAY = new Weekday();
static final Weekday FRIDAY = new Weekday();
static final Weekday SATURDAY = new Weekday();
static final Weekday SUNDAY = new Weekday();
}
class Student{
//注意:当weekday 类型变了的时候,下面的getset方法都要变
private Weekday weekday;
public Weekday getWeekday() {
return weekday;
}
public void setWeekday(Weekday weekday) {
this.weekday = weekday;
}
}
public class 枚举 {
public static void main(String[] args) {
Student s = new Student();
s.setWeekday(Weekday.FRIDAY);
Weekday res = s.getWeekday();
if(res == Weekday.SATURDAY || res == Weekday.SUNDAY) {
System.out.println("Today is holiday !");
}
}
}
优点:即明确了传参数据的含义,又符合逻辑(无法输入数字)
3.枚举:表示一个事物的固定状态
修饰符 enum 枚举名称{
常量1,2,3
}
4.枚举相当于一个特殊的类,默认继承了Enum
Enum是底层封装了许多功能的一个类
5.枚举不能直接创建对象,因为它把构造器私有化了
6.打印枚举
enum Sex{
MAN,WOMAN;
}
public class 枚举 {
public static void main(String[] args) {
System.out.println(Sex.MAN);
System.out.println(Sex.MAN.name());
System.out.println(Sex.MAN.ordinal());//该常量在类中的位置
switch(Sex.WOMAN) {
case WOMAN: break;
}
//将字符串转换成枚举类型
Sex s =Sex.valueOf("MAN");//此字符串必须是枚举里的某个常量
System.out.println(s);
System.out.println("---------");
Sex[ ] x = Sex.values();//输出枚举中的所有常量
for (Sex sex : x) {
System.out.println(sex);
}
}
【MAN
MAN
0
MAN
---------
MAN
WOMAN
】