如果一个类型只能创建确定个数的对象这个类型就可以是枚举类型
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);
}
}