day21 Enum以及时间类

如果一个类型只能创建确定个数的对象这个类型就可以是枚举类型

Eg:季节 enum Season{}=>4 月份 星期 light 订单状态

枚举类型的注意点

1. 枚举类中的构造方法默认提供Private 类名(){}

2. 最后一个枚举常量的后面有代码必加;

3. 枚举之间,分隔

4. 所有枚举常量的名字大写因为是final修饰的常量

5. 枚举常量必须位于枚举类首行且连续

6. 枚举类型有方法和属性。通过构造方法赋值private构造方法

7. 枚举类型默认继承Enum 不能再继承其他类型 但是可以实现接口

enum Week{
	周一,周二,周三,周四,周五,周六,周天;
}
show(Week.周一);//调用
public static void show(Week day){
		switch(day){
//public static final Week 周一=new Week(); 默认
			case 周一,周三,周六->System.out.println("JAVA");
			case 周二,周四->System.out.println("VUE");
			case 周五->System.out.println("英语");
			case 周天->System.out.println("休息");
		}
}
public class Exec2{
	public static void main(String[] args){
		交通灯.RED.sing();
	}
}
interface miaoshu{
	void sing();
}
//交通信灯
enum 交通灯 implements miaoshu{
	RED("红灯","闯一闯"){
		@Override
		public void sing(){
			System.out.println("我是红灯");
		}	},
	GREEN("绿灯","大胆走"){
		@Override
		public void sing(){
			System.out.println("我是绿灯");
		}
		},
	YELLOW("黄灯","等一等"){
		@Override
		public void sing(){
			System.out.println("我是黄灯灯");
		}
		};
	String name;
	String info;
	private 交通灯(String name,String info){
		this.name=name;
		this.info=info;
	}

一.将所有的枚举类型收集到数组/集合

Season[] data=Season.values()

for遍历 请选择......

2. 将所有的枚举类型收集到集合中

EnumSet 单值集合java.util.*;

EnumSet<Season> set=Enum.allOf(Season.class); //放到集合中 就可以使用streaml了

收集到以后请用户输入时要用到anyMatch

二. 枚举类型《==》String

//枚举类型--->String

//String str=枚举常量.name();

Season ss=Season.SUMMEER;

String str=ss.name();

System.out.println(str);

//String ->枚举 不常用的

Season sss=Season.value(String)

String str2=”SUMMER”;//如果不在枚举里面就非法异常

Season sss=Season.valueOf(str2);

//in

//EnumSet<Season>校验 用户输入 是否在枚举里面

Set.stream().anyMatch((x)->{return x.name().equals(in)})

三 下标0开始

枚举常量.ordinal()

Int index=Season.WINDER.ordinal();

四、比较 equals final 比较的地址== 不可覆盖

五. compareTo

用下标算的s1.compareTo(s2) s1-s2

练习EnumSet

public class Exec4{
	public static void main(String[] args){
		// 提示用户所有的 科目
		// 清热解毒
		// 肠胃不适
		// 咽喉疼痛
		// 其他
		EnumSet<Type> set=EnumSet.allOf(Type.class);
		// 只要用户输入的不存在 就一直重新输入
		set.stream().forEach(System.out::println);
		System.out.println("请选择要挂号的科目");
		Scanner sc = new Scanner(System.in);
		String in = sc.next();
		while(!check(in)){
			System.out.println("输入错误,重新输入");
			in=sc.next();
		}
		System.out.println("挂号成功");
	}
	public static boolean check(String in){
		return EnumSet.allOf(Type.class).
		stream().anyMatch(x->x.toString().equals(in));
	}
}

enum Type{
	清热解毒,肠胃不适,咽喉疼痛,其他;
}

关于Date时间类的

import java.util.*;
import java.text.*;
public class Exce5{
	public static void main(String[] args)throws Exception{
		//获取当前时间
		Date now=new Date();
		System.out.println("当前时间:"+now);
		//获取系统当前的毫秒数 long tt
		long tt=now.getTime();
		System.out.println("当前毫秒数:"+tt);

		//获取指定日期
		Date zd=new Date(tt-1000000);
		System.out.println("获取指定日期:"+zd);

		//将now--》String
		SimpleDateFormat ff=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String str=ff.format(now);
		System.out.println("格式化时间:"+str);
		Scanner sc=new Scanner(System.in);

		//5.
		System.out.println("请输入时间【年-月-日 时:分:秒】");//
		//"2022-10-9 15:12:45"
		String dateIn=sc.nextLine();
		Date dd=ff.parse(dateIn);
		System.out.println("dd="+dd);


	}
}

猜你喜欢

转载自blog.csdn.net/Miserables_/article/details/143373996