3.1 Object类
- 概述 : 类Object是类层次结构的根,每个类都把Object作为超类。 所有对象(包括数组)都实现了这个类的方法
- 方法 : public String toString()
如果一个类没有重写toString方法 , 那么打印此类的对象 , 打印的是此对象的地址值
如果一个类重写了toString方法 , 那么打印此类的对象 , 打印的是此对象的属性值
好处 : 把对象转成字符串 , 快速查看一个对象的属性值
执行时机 : 打印对象时会默认调用toString方法
- 方法 : public boolean equals()
如果一个类没有重写equals方法 , 那么比较此类的对象 . 比较的是地址值
如果一个类重写了equals方法 . 那么比较此类的对象 , 比较的是属性值是否相等
好处 : 可以比较对象的内容
3.2 Objects类
- Objects是JDK1.7新增的一个对象工具类,里面都是静态方法可以用来操作对象。比如对象的比较,计算对象的hash值,判断对手是否为空…比如里面的equals方法,可以避免空指针异常
public static boolean equals(Object a, Object b):判断两个对象是否相等 public static boolean equals(Object a, Object b) { return (a == b) || (a != null && a.equals(b)); } a.equals(b) :如果a是null值,肯定会空指针 Objects.equals(a,b);:如果a是null,不会导致空指针异常
3.3 Date类
概述 : java.util.Date 表示特定的瞬间,精确到毫秒
构造方法 :
public Date(): 创建的对象,表示的是当前计算机系统的时间
public Date(long time): Date对象 = 1970/1/1 0:0:0 + time毫秒值
成员方法 :
public long getTime(): 返回毫秒值 = 当前Date代表的时间 - 1970/1/1 0:0:0
public void setTime(long t): Date对象 = 1970/1/1 0:0:0 + time毫秒值
import java.util.Date; /* Date类 : 代表的是一个瞬间 , 精确到毫秒 构造方法 : public Date() : 代表的是当前系统时间 public Date(long date) : Date对象 = 1970/1/1 0:0:0 + long类型的毫秒值 成员方法 : public void setTime(long date) : Date对象 = 1970/1/1 0:0:0 + long类型的毫秒值 public long getTime() : 返回的是毫秒值 = Date代表的时间 - 1970/1/1 0:0:0 */ public class DateDemo { public static void main(String[] args) { // public Date() : 代表的是当前系统时间 // Date d = new Date(); // System.out.println(d); // public Date(long date) : Date对象 = 1970/1/1 0:0:0 + long类型的毫秒值 // Date d2 = new Date(1000L * 60 * 60 * 24); // 1970/1/1 0:0:0 + 一天的毫秒值 // System.out.println(d2); Date d = new Date(); // public void setTime(long date) : Date对象 = 1970/1/1 0:0:0 + long类型的毫秒值 // d.setTime(1000L * 60 * 60 * 24); System.out.println(d); // public long getTime() : 返回的是毫秒值 = Date代表的时间 - 1970/1/1 0:0:0 // System.out.println(d.getTime()); } }
3.4 DateFormat类
- 概述 : 主要用于操作日期格式的一个类
- 作用 :
格式化 : Date --> String
解析 : String --> Date
- 构造方法 :
SimpleDateFormat(String pattern) 给定日期模板创建日期格式化对象
- 成员方法 :
public String format ( Date d ):格式化,将日期对象格式化为字符串
public Date parse ( String s ):解析,将字符串解析为日期对象
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; /* SimpleDateFormat类 : "2021年04月03日 16:48:10" ---> Date Date(Sat Apr 03 16:41:38 CST 2021) --> "2021年04月03日 16:48:10" 作用 : 格式化 : Date --> String 解析 : String --> Date 构造方法 : public SimpleDateFormat(String pattern) : pattern : 字符串类型的日期模板 成员方法 ; public final String format(Date date) : 接收一个Date对象返回指定模式的字符串 public Date parse(String source) : 接收一个字符串 , 返回一个Date对象 1 获取当前的日期对象,使用格式:yyyy-MM-dd HH:mm:ss 来表示,例如:2020-10-31 17:00:00【格式化】 2 将字符串的 2020年10月31日 17:00:00,转换为日期Date对象。【解析】 */ public class SimpleDateFormatDemo { public static void main(String[] args) throws ParseException { // 解析 : String --> Date String strDate = "2020年10月31日 17:00:00"; // 注意 : 解析时 , SimpleDateFormat的参数(日期模板) , 必须和要解析字符串的模式匹配 SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); // public Date parse(String source) : 接收一个字符串 , 返回一个Date对象 Date date = sdf.parse(strDate); System.out.println(date); // Sat Oct 31 17:00:00 CST 2020 } private static void method() { // 格式化 : Date --> String // 获取当前系统时间 Date date = new Date(); // System.out.println(date);// Sat Apr 03 16:53:35 CST 2021 // public SimpleDateFormat(String pattern) : pattern : 字符串类型的日期模板 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // public final String format(Date date) : 接收一个Date对象返回指定模式的字符串 String strDate = sdf.format(date); System.out.println(strDate); } }
3.5 Calendar类
概述 :
- java.util.Calendar类表示日历,内含有各种时间信息,以及获取,计算时间的方法。
- Calendar本身是一个抽象类,可以通过Calendar提供的静态方法getInstance日历子类对象
Calendar常用方法 :
方法名 |
说明 |
public static Calendar getInstance() | 获取一个它的子类GregorianCalendar对象。 |
public int get(int field) | 获取指定日历字段的时间值。 |
public void set(int field,int value) | 设置指定字段的时间值 |
public void add(int field,int amount) | 为某个字段增加/减少指定的值 |
- get,set,add 方法参数中都有一个整数类型的参数field,field用来区分当前要获取或者操作的日期时间数据的。field数据的值使用Calender中定义的整数常量来表示
Calendar.YEAR : 年
Calendar.MONTH :月
Calendar.DAY_OF_MONTH:月中的周
Calendar.HOUR:小时
Calendar.MINUTE:分钟,
Calendar.SECOND:秒
Calendar.DAY_OF_WEEK:星期
星期对应的关系
字段时间值 : 1 2 3 … 7
真正的时间 : SUNDAY MONDAY TUESDAY … SATURDAY
月份对应的关系
字段时间值 : 0 1 … 11
正真的时间 : JANUARY FEBRUARY … DECEMBER
/* 月份对应的关系 字段时间值 : 0 1 .... 11 正真的时间 : JANUARY FEBRUARY .... DECEMBER */ import java.util.Calendar; /* 成员方法 : public int get(int field) 获取指定日历字段的时间值。 public void set(int field,int value) 设置指定字段的时间值 public void add(int field,int amount) 为某个字段增加/减少指定的值 */ public class CalendarDemo { public static void main(String[] args) { // 获取Calendar对象 , rightNow对象 Calendar rightNow = Calendar.getInstance(); // public void set(int field , int value) 设置指定字段的时间值 // rightNow.set(Calendar.YEAR , 2024); // rightNow.set(Calendar.MONTH , 5); // rightNow.set(Calendar.DAY_OF_MONTH, 10); // public void add(int field,int amount) 为某个字段增加/减少指定的值 // rightNow.add(Calendar.DAY_OF_MONTH , -3); // public int get(int field) : 获取指定日历字段的时间值。 int year = rightNow.get(Calendar.YEAR); int month = rightNow.get(Calendar.MONTH); int day = rightNow.get(Calendar.DAY_OF_MONTH); System.out.println(year); // 2021 System.out.println(month);// 3 System.out.println(day); // 3 } }
import java.util.Calendar; /* 1 写代码使用get方法,将年,月,日,时,分,秒,周获取出来 特别注意获取月份,和星期有以下特点: 直接获取的月份数据是从0开始的, 0表示1月,.....11表示12月 周的获取,从周日开始计算,1就是周日,2就是周一 ......7就是周六 星期对应的关系 字段时间值 : 1 2 3 ... 7 真正的时间 : SUNDAY MONDAY TUESDAY ... SATURDAY 月份对应的关系 字段时间值 : 0 1 .... 11 正真的时间 : JANUARY FEBRUARY .... DECEMBER */ public class Test1 { public static void main(String[] args) { // 拿到当前时间 Calendar now = Calendar.getInstance(); System.out.println(now.get(Calendar.YEAR)); System.out.println(now.get(Calendar.MONTH)); System.out.println(now.get(Calendar.DAY_OF_MONTH)); System.out.println(now.get(Calendar.HOUR)); System.out.println(now.get(Calendar.MINUTE)); System.out.println(now.get(Calendar.SECOND)); int week = now.get(Calendar.DAY_OF_WEEK);// 7 System.out.println(getWeek(week));// 字段值 } public static String getWeek(int field){ String[] str = { "" , "SUNDAY" , "MONDAY" , "TUESDAY" , "WEDNESDAY" , "THURSDAY" , "FRIDAY" , "SATURDAY"}; return str[field]; } }
import java.util.Calendar; /* 2 写代码实现,获取2022年10月1日是星期几? 参考思路: 直接获取日历对象,得到的是当前系统的日历时间信息。 获取日历对象后,要重新设置日期 再获取星期数据 */ public class Test2 { public static void main(String[] args) { Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, 2022); cal.set(Calendar.MONTH, 9); cal.set(Calendar.DAY_OF_MONTH, 1); int week = cal.get(Calendar.DAY_OF_WEEK); System.out.println(getWeek(week));// 字段值 } public static String getWeek(int field){ String[] str = { "" , "SUNDAY" , "MONDAY" , "TUESDAY" , "WEDNESDAY" , "THURSDAY" , "FRIDAY" , "SATURDAY"}; return str[field]; } }
import java.util.Calendar; /* 3 计算10000天之后的年月日 参考思路: 先获取当前日历对象 再调用add方法,指定DATE或者DAY_OF_MONTH,添加10000天 再获取日历的年,月,日 */ public class Test3 { public static void main(String[] args) { Calendar cal = Calendar.getInstance(); cal.add(Calendar.DAY_OF_MONTH, 10000); System.out.println(cal.get(Calendar.YEAR)); System.out.println(cal.get(Calendar.MONTH)); System.out.println(cal.get(Calendar.DAY_OF_MONTH)); } }
3.6 Math类
- 概述 : Math包含执行基本数字运算的方法,如基本指数,对数,平方根和三角函数。所提供的都是静态方法,可以直接调用
- 常用方法 :
public static int abs(int a) |
获取参数a的绝对值: |
public static double ceil(double a) | 向上取整 |
public static double floor(double a) | 向下取整 |
public static double pow(double a, double b) | 获取a的b次幂 |
public static long round(double a) |
四舍五入取整 |
3.7 System类
- System类包含几个有用的类字段和方法。 它不能被实例化
- 常用方法 :
public static int abs(int a) |
获取参数a的绝对值: |
public static double ceil(double a) | 向上取整 |
public static double floor(double a) | 向下取整 |
public static double pow(double a, double b) | 获取a的b次幂 |
public static long round(double a) |
四舍五入取整 |