java后端开发day28-常用API三时间类包装类
目录
java后端开发day28–常用API(三)时间类&包装类
(以下内容全部来自上述课程)
1.JDK7以前的时间相关类
1.Date
全世界的时间,有一个统一的计算标准。
格林威治时间:GMT(已过时)
原子钟(现在)
中国标准时间:世界标准时间+8小时(东八区)
时间单位换算:
- 1秒=1000毫秒
- 1毫秒=1000微妙
- 1微妙=1000纳秒
Date类是一个JDK写好的Javabean类,用来描述时间,精确到毫秒。
利用空参构造创建的对象,默认表示系统当前时间。
利用有参构造创建的对象,表示指定的时间。
package Date;
import java.util.Date;
public class Demo1 {
public static void main(String[] args) {
//1.创建对象表示一个时间
Date d1 = new Date();
//2.创建对象表示一个指定的时间
Date d2 = new Date(0L);
System.out.println(d2);
//3.setTime 修改时间对象中的毫秒值
//1000毫秒=1秒
d2.setTime(1000L);
System.out.println(d2);
//4.getTime 获取时间对象中的毫秒值
long time = d2.getTime();
System.out.println(time);
}
}
2.SimpleDateFormat
1.概述
- 格式化:把时间变成我们喜欢的格式。
- 解析:把字符串表示的时间变成Date对象。
2.方法
3.格式
API帮助文档:
package Date;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.text.ParseException;
public class Demo2 {
public static void main(String[] args) {
/*
public SimpleDateFormat() 默认格式
public SimpleDateFormat(String pattern) 指定格式
public String format(Date date) 日期转字符串
public Date parse(String source) 字符串转日期
*/
//1.定义一个字符串表示时间
String time = "2022-12-12 12:12:12";
//2.利用空参构造创建SimpleDateFormat对象
//细节:
//1.格式必须要和字符串的时间格式一致
//2.格式中如果出现了月份,则月份必须要写m
//3.格式中如果出现了分钟,则分钟必须要写m
//4.格式中如果出现了秒,则秒必须要写s
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
Date d = sdf.parse(time);
System.out.println(d.getTime()); //1670876332000
} catch (ParseException e) {
e.printStackTrace();
}
}
public static void method() {
//1.利用空参构造创建SimpleDateFormat对象
SimpleDateFormat sdf = new SimpleDateFormat();
//2.创建日期对象
Date d = new Date();
//3.调用format方法,把日期转成字符串
String s = sdf.format(d);
System.out.println(s);
//4.利用带参构造创建SimpleDateFormat对象
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//5.调用format方法,把日期转成字符串
String s2 = sdf2.format(d);
System.out.println(s2);
}
}
3.Calendar
1.概述
- Calendar代表了系统当前时间的日历对象,可以单独修改、获取时间中的年,月,日
- 细节:Calendar是一个抽象类,不能直接创建对象。
- 获取对象的方法:public static Calendar getInstance() 获取当前时间的日历对象
2.方法
字段:属性,成员变量。比如:年,月,日
细节—–获取日历对象:
- 底层原理:会根据系统的不同时区来获取不同的日历对象,默认表示当前的时间。
- 把时间中的纪元,年,月,日,时,分,秒,星期,等等的都放到一个数组当中。
- 月份:范围0~11,如果获取出来的是0,那么实际上是1月
- 星期:在老外的眼里,星期日是一周中的第一天。
2.JDK8新增的时间相关类
1.Date类
1.ZoneId:时区
2.Instant:时间戳
3.ZoneDateTime:带时区的时间
细节:
- JDK8新增的时间对象都是不可变的
- 如果我们修改了,减少了,增加了时间
- 那么调用者是不会发生改变的,会产生一个新的时间
2.日期格式化类
DateTimeFormatter:时间的格式化和解析
3.日历类
1.LocalDate:年、月、日
2.LocalTime:时、分、秒
3.LocalDateTime:年、月、日、时、分、秒
4.统一
4.工具类(了解)
1.Duration:时间间隔(秒,纳秒)
2.Period:时间间隔(年,月,日)
3.ChronoUnit:时间间隔(所有单位)
3.包装类
基本数据类型对应的 引用类型 。
就是都是new出来的对象。
1.Integer
1.获取对象
范围:-128~127
底层原理:
- 因为在实际开发中,-128~127之间的数据,用的比较多。
- 如果每次都是new对象,就太浪费内存了
- 所以,提前把这个范围之内的每一个数据都创建好对象
- 如果要用到了就不会创建新的,而是返回已经创建好的对象。
2.自动装箱和自动拆箱
JDK5的时候提出了一个机制:自动装箱和自动拆箱
- 自动装箱:把基本数据类型 自动 变为其对应的包装类。
- Integer i1 = 10;
- 自动拆箱:把包装类 自动 地变成其对象的基本数据类型。
- Integer i2 = new Integer(10);
- int i = i2;
2.成员方法 请添加图片描述
拓展:
- Java是一个强类型语言
- 强类型语言:每种数据在java中都有各自的数据类型
- 在计算的时候,如果不是同一种数据类型,是无法直接计算的。
细节:
- 在类型转换的时候,括号中的参数只能是数字不能是其他,否则代码会报错。
- 8种包装类当中,除了Character都有对应的parseXxx的方法,进行类型转换。