- Object类常用的API
- toString方法
- equals方法
- Objects类
- equals方法
- Date类
- 构造方法
- 成员方法
- DateFormat类
- 成员方法
- SimpleDateFormat
- 小练习(计算一个人已经出生了多少天)
Object类是类层次结构的根类,是所有类的父类,它描述的所有方法子类都可以使用。
如果一个类没有指定的父类,则默认继承Object类
重写前:打印的是包名类名@地址值
重写后:打印的是对象的属性值
直接打印对象的名字,其实就是调用对象的toString方法 p = p.toString
ArrayList和 Scanner重写了toString方法而Random 没有重写。
重写前:比较两个对象的地址值
重写后:比较两个对象的属性值
String类的equals方法重写了
String s1=”abc”
String s2=”abc”
System.out.printIn(s1.equals(s2));//结果是true
Objects类 equals方法
Objects类的equals方法:对两个对象进行比较,防止空指针异常
格式:Objects.equals(s1, s2);
比如String s1=null;
String s2=”abc”;
boolean b=s1.equals(s2);// NullPointerException,null不能调用方法,会抛出空指针异常
== 比较运算符
基本数据类型:比较值
引用数据类型:比较的是两个对象的地址值
Objects.equals源代码:
public static boolean equals(Object a, Object b) {
return (a == b) || (a != null && a.equals(b));
}
重写equals(直接快捷键生成就好了,下面是手工的)
当一个类是父类一个类是子类,相比较的时候,利用强转
java.util.Date:表示日期和时间的类
Date():根据当前系统时间创建日期对象
Date(long time):根据根据传入的毫秒值时间创建日期对象
比如:Date d1=new Date(0L);
打印出的时间结果是1970 年 1 月 1日 08:00:00
因为时间原点(0毫秒):1970 年 1 月 1日 00:00:00(英国格林威治时间)
但是由于中国属于东八区,会把时间增加8个小时 1970 年 1 月 1日 08:00:00
long getTime():获取当前日期对象的毫秒时间,也就是当前时间距离时间原点的毫秒
String toLocaleString():根据本地格式转换日期对象
java.text.DateFormat类:是日期、时间格式化子类的抽象类
作用:格式化(日期 转换为 文本)、解析(文本 解析为 日期)
String format(Date date):按照指定的模式,把Date日期,格式化为符合模式的字符串
Date parse(String sourse):把符合模式的字符串,解析为Date日期
java.text.SimpleDateFormat 继承于 DateFormat
SimpleDateFormat(String pattern)
常用模式:“yyyy-MM-dd HH:mm:ss"或者"yyyy年MM月dd日 HH时mm分ss秒”
使用步骤:
SimpleDateFormat sdf=new SimpleDateFormat(yyyy-MM-dd HH:mm:ss);
Date date=new Date();
String text = sdf.format(date);
SimpleDateFormat sdf=new SimpleDateFormat(yyyy-MM-dd HH:mm:ss);
Date date=sdf.parse(“2000-03-21 12:28:30”);
注意:parse方法声明了一个异常叫ParseException解析异常,如果字符串和构造方法的模式不一样,那么程序就会抛出此异常。
public class test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入出生日期,格式为yyyy-MM-dd");
String birthday=scanner.next();
Date date1=new Date();
long time1=date1.getTime();//获取当前时间的毫秒数
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
try {
Date date2=sdf.parse(birthday);
long time2=date2.getTime();//获取出生日期的毫秒数
long time=(time1-time2)/1000/60/60/24;
System.out.println(time);
} catch (ParseException e) {
e.printStackTrace();
}
}
}



