今日内容:【Object类、常用API】
-
Object类
-
Date类
-
DateFormat类
-
Calendar类
-
System类
-
StringBuilder类
-
包装类
学习目标
- 能够理解Object类的特点
- 能够重写Object类的toString方法
- 能够重写Object类的equals方法
- 能够使用日期类输出当前的日期
- 能够使用将日期格式化为字符串的方法
- 能够使用将字符串转化为日期的方法
- 能够使用System类的数组复制方法
- 能够说出使用StringBuilder类可以解决的问题
- 能够使用StringBuilder类可以解决的问题
- 能够说出8种基本数据类型对应的包装类
- 能够说出自动装箱、自动拆箱的概念
- 能够将字符串转化成对应的基本数据类型
- 能够将基本数据类型转换成对应的字符串
预习下周内容:
集合框架(Collection、List、Set、Map)、泛型、异常框架(Throwable、Error、Exception) 异常(运行期异常、编译期异常)、线程(单线程、多线程、线程池)
java.util.Date 表示时间和日期的类
类Date可以获取精确到毫秒值的特定瞬间
毫秒。千分之一秒 1秒 = 1000毫秒
2020-11-27 19:26:30:333 瞬间
毫秒值的作用,可以堆时间和日期做一个精确的计算
2020-10-09 到 2020-11-27 中间一共有多少天
可以把日期先转换成毫秒值进行计算,计算完毕再把毫秒值转化成日期
把日期转换成毫秒值
当前的日期2020-11-27
时间起始值(原点)(0毫秒)1970 年 1 月 1日00:00:00 英国的格林威治时间 以来的指定毫秒数
就是计算当前日期到时间起始值一共有多少毫秒?
注意:
中国是属于东八区 会在标准时间之上再增加八个小时 上海或者北京
1970年1月1日 08:00:00
一天 = 24* 60 * 60 *1000 = 86400000 毫秒值
把毫秒值再转换成日期
1606477397501/86400000 天数
public class Demo01Date {
public static void main(String[] args) {
System.out.println(System.currentTimeMillis());
Date date = new Date(0L);
System.out.println(date);//THU JAN 01 08:00:00 CST 1970
// 获取当前时间的毫秒值
Date date2 = new Date();
System.out.println(date2);//Fri Nov 27 19:52:17 CST 2020
// 精确到毫秒值 getTime()
long time = date2.getTime();
System.out.println(time);//1606478033867L
// 毫秒值在转换成日期
Date date3 = new Date(1606478033867L);
System.out.println(date3);
}
}
Java.text.DateFormat: 进行日期/时间格式化的抽象类
作用:
格式化:日期 ----》 文本
解析: 文本-----》日期
成员方法:
String format(Date date): 按照指定的模式,把date日期,格式化为符合模式的字符串
Date parse(String source) 把符合模式的字符串,解析成Date日期
DateFormat类是一个抽象类,无法直接创建对象,可以使用它的子类SimpleDateFormat
java.text.SimpleDateFormat extends DateFormat
构造方法:
public SimpleDateFormat(String pattern)
用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormat
参数:
String pattern 传递指定的模式
Thu Jan 01 08:00:00 CST 1970
调整为: 20:15 2020/11/27
模式:严格区分大小写
y 年
M 月
d 日
H 二十四时
m 分
s 秒
F 星期
写对应的模式 会把模式转换成对应的时间和日期
“HH:mm yyyy/MM/dd”
使用format方法 把日期格式化为文本
使用DateFormat类中的方法parse,把文本解析成日期
使用步骤:
1. 创建SimpleDateFormat对象,构造方法传递指定的模式
2. 调用SimpleDateFormat类中的parse方法,把符合构造方法当中模式的字符串解析成日期
注意:
public Date parse(String source) throws ParseException
如果字符串和构造方法当中的模式不一样,程序会抛出解析异常
如果程序调用了一个携带解析异常的方法,那么就必须对这个异常进行处理,处理异常通常有两种解决方案
1.使用throws继续往上抛
2.使用try catch语句块处理掉这个异常
代码如下:
public class DateFormatDemo {
public static void main(String[] args) throws ParseException {
Date date = new Date();
// 按照指定的模式生成对应的字符串值
// 使用DateFormat类的子类SimpleDateFormat
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm yyyy/MM/dd");
// 把日期格式化为字符串
String result = simpleDateFormat.format(date);
System.out.println(result);
System.out.println("============================");
String strDate = "2020年11月27日 20:31:30 4";
SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss F");
Date date2 = simpleDateFormat2.parse(strDate);
System.out.println(date2);
// 练习:使用日期时间相关的API 计算一个人已经出生了多少天 根据输入的出生日期 距离今天有多少天
System.out.println("============================");
String strDate3 = "1999年11月14日 20:31:30 4";
SimpleDateFormat simpleDateFormat3 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss F");
Date date3 = simpleDateFormat2.parse(strDate3);
Date date4 = new Date();
long time2 = date4.getTime();
long time1 = date3.getTime();
long time = time2-time1;
System.out.println(time);
System.out.println(time/86400000 + "天");
}
}