课程内容:
-
枚举
-
时间类
枚举:enum 当希望一个类的对象是有限个 确定的 非常使用枚举类型 【枚举其实就是列举一个类的对象有哪些 当需要使用的时候从已创建的对象中进行选择】
-
四大类型:
-
class interface enum @interface
-
类 接口 枚举 注解
-
-
如何定义枚举
jdk5.0之前 没有出现关键字enum
class Season{//季节 希望只能创建4个对象
//私有化构造方法 防止外界随意的创建对象
private Season(){}
//自己创建4个对象
//static:防止出现死循环嵌套
//final:防止外界随意的修改Season值
public final static Season SPRING = new Season();
public final static Season SUMMER = new Season();
public final static Season AUTUMN = new Season();
public final static Season WINTER = new Season();
}
jdk5.0开始 出现了关键字enum
//jdk5.0开始 出现关键字enum
enum Season{//季节 希望只能创建4个对象
//枚举里面要求上来先定义枚举常量 然后再写其他的代码
//枚举中的属性前面自动加上修饰符:public static final
//枚举常量和常量之间用,隔开 最后一个枚举常量的后面有时需要加;
//如果最后一个枚举对象后面没有其他的语句;可以省略
//如果最后一个枚举对象的后面还有其他的语句 ;不可以省略
SPRING,//SPRING=> public static final Season SPRING = new Season();
SUMMER,
AUTUMN,
WINTER
//私有化构造方法 防止外界随意的创建对象
//枚举中的构造方法 默认都是私有的
//private Season(){}
} -
枚举里面可以正常的定义属性和方法 所有的枚举类型默认都继承Enum类 在Enum类中toString()已经覆盖了 打印枚举对象的时候显示:枚举常量的名字 如果对父类的toString()不满的话 可以在枚举中进行覆盖
-
枚举不能在继承其他的类 因为Java中的类只能单继承 但是可以实现多个接口
interface MyInfo{
//抽象方法:描述每个季节代表歌名
void song();
}
enum Season implements MyInfo{
SPRING("春","春意盎然"){
@Override
public void song(){
System.out.println("《春天在哪里》");
}
},//SPRING("春","春意盎然");
/**
public static final Season SPRING = new Season("春","春意盎然"){
@Override
public void song(){
。。。。
}
}
*/
SUMMER("夏","夏日炎炎"){
@Override
public void song(){
System.out.println("《夏天的风》");
}
},
AUTUMN("秋","秋高气爽"){
@Override
public void song(){
System.out.println("《秋天不回来》");
}
},
WINTER("冬","冰天雪地"){
@Override
public void song(){
System.out.println("《你就像那冬天里的一把火》");
}
};
//枚举中可以正常的定义属性 而且还可以封装
String name;
String desc;
//如果枚举中提供了属性 那么尽量写出自己的构造方法
//因为默认的构造方法没有对属性赋值
private Season(String name,String desc){
this.name = name;
this.desc = desc;
}
//如果对Enum类中的toString()打印枚举常量名不满意 可以覆盖
@Override
public String toString(){
return "中文名:" + name + " 成语:" + desc;
}
//@Override
//public void song(){
//如果song()覆盖在这个位置 那么春夏秋冬每个对象调用该方法
//显示的结果都是一样的
// System.out.println("《春天在哪里》");
//}
} -
枚举继承Enum类 获得一些核心方法
static values():将枚举中的对象装进数组里面返回
static valueOf(String):将参数字符串转换成枚举对象
如果枚举中有一个对象和字符串名字一模一样 将枚举对象返回
如果枚举中没有一个对象和字符串单词一样 会出现异常
name():得到枚举对象的名字
ordinal():得到枚举对象的下标
compareTo():比较两个枚举对象的大小 [底层拿着下标比较]
equals():判断两个枚举对象是否一样 [底层拿着下标比较]
==================================================================
不是枚举的方法:
EnumSet<枚举> set = EnumSet.allOf(枚举名.class);
时间类:
-
jdk1.0 Date 日期类 java.util 不安全 不支持时区
如何得到当前时间:
Date dd = new Date();
如何获得指定时间:
Date dd = new Date(long time);//在1970-1-1-0-0-000的基础上+time时间
如何修改年月日时分秒/得到年月日时间秒 -》 过时
如何格式化 -》 时间类 -》 String
Data dd = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time = sdf.format(dd);
如何格式化 -》 String -> 时间类
String time = "2022-2-28 15:56:06";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date dd = sdf.parse(time); -
jdk1.1 Calendar 日历类 java.util 线程不安全
如何得到当前时间:
Calendar cc = Calendar.getInstance();
如何修改年月日时分秒
cc.set(字段,值)
cc.set(1,2022);//将年修改成2022
cc.set(Calendar.YEAR,2022);
1=YEAR
2=MONTH
5=DAY_OF_MONTH
11=HOUR_OF_DAY
12=MINUTE
13=SECOND
如何得到年月日时分秒
cc.get(字段)
cc.get(1);
cc.get(Calendar.YEAR);
如何格式化时间 -》 Calendar -> String
Calendar cc = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time = sdf.format(cc.getTime()); -
jdk8.0 LocalDate LocalTime LocalDateTime java.time 线程安全的 支持时区