java35

  1. 小项目:判断今天是否是休息日
代码一:
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
】
原文地址:https://www.cnblogs.com/-zero/p/10404968.html