1 Object类
Object类是所有类的父类,每个类都直接或间接的继承自该类
1.1 Object.toString()
作用:打印输出类信息
重写前:打印输出包名类名@地址值
重写后:打印输出属性值
1.2 Object.equals()
作用:比较两个对象
重写前:比较对象的地址值
重写后:比较对象的属性值
package ObjectDate;import java.util.Objects;public class ObjectTest {static class MyObject{String name;int id;public MyObject(String name, int id) {this.name = name;this.id = id;}@Overridepublic String toString() {return "MyObject{" +"name='" + name + '\'' +", id=" + id +'}';}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;MyObject myObject = (MyObject) o;return id == myObject.id &&Objects.equals(name, myObject.name);}}public static void main(String[] args) {//String类String a = "abc";String b = "abc";boolean result = a.equals(b);System.out.println(result);//trueSystem.out.println(a);//abc//因为String的源码中已经对equals和toString进行了重写//自定义类MyObject m1 = new MyObject("张三",1);MyObject m3 = new MyObject("张三",1);boolean result2 = m1.equals(m3);System.out.println(result2);//重写前 false;重写后trueSystem.out.println(m1.toString());//重写前:ObjectDate.ObjectTest$MyObject@4554617c;// 重写后:MyObject{name='张三', id=1}}
}
2 Objects类
jdk1.7后出现,提供静态方法操作对象,可以通过类直接调用方法。
public static void main(String[] args) {String a = "123";String c = null;boolean result = c.equals(a);//空指针异常boolean result = Objects.equals(a,c);//false//为了提高代码的健壮性 Objects提供了equals方法//Objects.equals的源码public static boolean equals(Object a, Object b) {return (a == b) || (a != null && a.equals(b));}
}
3 Date类
Date()空参数构造方法,Date(long L)长整型构造方法,getTime成员方法相当于System.currentTimeMillis()
import java.util.Date;public class DateTest {public static void main(String[] args) {//空参数构造方法Date d = new Date();System.out.println(d);//Wed Apr 01 09:32:04 CST 2020//Date类的成员方法long time = d.getTime();System.out.println(time);//毫秒值1585704724114System.out.println(System.currentTimeMillis());//同上//带Long参数的构造方法Date d2 = new Date(0L);System.out.println(d2);//Thu Jan 01 08:00:00 CST 1970}
}
4 DateFormat类&SimpleDateFormat类
所属java.text包,DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。日期/时间格式化子类(如 SimpleDateFormat)允许进行格式化(也就是日期 -> 文本)、解析(文本-> 日期)和标准化。将日期表示为 Date 对象,或者表示为毫秒数。
4.1 格式转换String format(Date date)
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/*public SimpleDateFormat(String pattern)用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。参数: pattern - 描述日期和时间格式的模式抛出: NullPointerException - 如果给定的模式为 nullIllegalArgumentException - 如果给定的模式无效模式:y 年 M 月 d 日 H 时 m 分 s 秒"yyyy-MM-dd HH:mm:ss""yyyy年MM月dd日HH时mm分ss秒"
*/public class DateTest {public static void main(String[] args) throws ParseException {//构造特定格式 SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date d = new Date();String text = s.format(d);System.out.println(d);//Wed Apr 01 09:48:17 CST 2100System.out.println(text);//2100-04-01 09:48:17
4.2 格式解析Date parse(String source)
//接上方//解析特定格式//parse抛出解析异常 字符串和构造方法中的模式不一样就会抛出//throw抛出 或者try catch处理Date d2 = s.parse("2100-04-01 09:48:17");System.out.println(d2);//Wed Apr 01 09:48:17 CST 2100}
}
4.3 应用示例
计算一个人出生了多少天:
步骤分析:
1. 获取输入的出生日期
2. 使用DateFormat的parse方法解析为Date格式
3. 调用getTime方法获得毫秒值
4. 获取当前日期的毫秒值
5. 计算两个日期的差值
6. 将毫秒值转化为天数并输出
输入日期格式:yyyy-MM-dd
public class DateTest {public static void main(String[] args) throws ParseException {//1.Scanner sc = new Scanner(System.in);System.out.println("按格式输入(yyyy-MM-dd):");String birthday = sc.next();//2.SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Date date = sdf.parse(birthday);//3.long dateMs = date.getTime();//4.long nowMs = new Date().getTime();//匿名对象//5.long delta = nowMs - dateMs;//6.int day = (int) (delta/(1000*86400));System.out.println(day);}
}
5 Calendar类
Calendar类时抽象类,提供操作日历字段的方法,无法直接创建对象使用
通过调用静态方法getInstance获取Calendar子类对象,获取默认时区和语言环境的日历
5.1 常用方法
- int get(int filed):获取给定日历字段的值
- void set(int filed):将给定的日历字段设置为给定值
- abstract void add(int flied, int amount):根据日历规则,对给定的日历字段增加或减去指定时间量
- Date getTime():返回一个表示Calendar时间值的Date对象
/*
1. int get(int filed):获取给定日历字段的值
2. void set(int filed):将给定的日历字段设置为给定值
3. abstract void add(int flied, int amount):根据日历规则,对给定的日历字段增加或减去指定时间量
4. Date getTime():返回一个表示Calendar时间值的Date对象filed 是日历类的字段 可以使用Calendar的静态成员变量获取
YEAR MONTH DATE DAY_OF_MONTH HOUR MINUTE SECOND*/
public class DateTest {public static void main(String[] args){//getInstanceCalendar c = Calendar.getInstance();//get set addint month = c.get(Calendar.MONTH);System.out.println(month+1);//西方是0~11 东方+1int date = c.get(Calendar.DATE); //每月多少号int day = c.get(Calendar.DAY_OF_MONTH);System.out.println(date);//1System.out.println(day);//1c.set(Calendar.YEAR,2100);c.set(8888,8,8);System.out.println(c.get(Calendar.YEAR)+"-"+c.get(Calendar.MONTH));//8888-8c.add(Calendar.YEAR,10);System.out.println(c.get(Calendar.YEAR));//日历转换为日期Date time = c.getTime();System.out.println(time);}
}