文章目錄
一.Object類
所在包: java.lang.Object
概念:
- 所有類的根類。
- 任何類都會直接或間接的繼承Object類
- 一個類如果沒有明確的寫出extends 父類,默認的爹就是Object類
方法:
toString
-
如果直接輸出對象名,沒有重寫Object類中的toString方法,默認調用了Object類中的toString。輸出的是地址值!
-
如果重寫了toString方法,在輸出地址值就沒有意義了,所以,重寫後的toString應該輸出內容。
-
如果想讓我們自定義的類直接輸出,不出現地址值,那麼該類就需要重寫toString,返回屬性值。
重寫toString方法:
public class Animal {
private String name;
@Override
public String toString() {
return "Animal{" +
"name='" + name + '\'' +
'}';
}
}
equals
System.out.print(p1.equals(p2)); //false
//equals源碼
public biilean equals(Object obj){
return (this == obj); //this代表的是p1。
}
==:
- 針對於引用數據類型:比較的是地址值
- 針對於基本數據類型:比較的是數據值
總結:
- 如果想直接輸出對象名,不是地址值,重寫toString方法。
- 如果比較兩個對象是否相等,重寫equals方法。
重寫equals的方法:
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Animal animal = (Animal) o;
return Objects.equals(name, animal.name);
}
二.Objects類
所在包:java.util.Objects
是一個工具類。
概念
特點:方法都是靜態。
訪問方式:類名直接調用。
Obejcts裏面的equals方法和Object裏面的equals方法的區別:
/**
Obejcts裏面的equals方法的源碼,可以看到裏面有判斷null的條件
*/
public static boolean equals(Object a, Object b){
return (a == b) || (a != null && a.equals(b));
}
/**
測試
*/
String s = null;
String s1 = "abc";
System.out.println(s.equals(s1)); //報錯
System.out.println(Objects.equals(s,s1)); //false
由上可見
Obejcts裏面的equals方法可以容忍null值,不會報空指針異常!
三.Date類
所在包:java.util.Date
日期類
概述
表示特定的瞬間,精確到毫秒(1秒 == 1000毫秒)。
毫秒的作用:測試代碼的效率。
System.currentTimeMillis() -->獲取當前系統毫秒值。
時間原點(國際基準時間)
1970年1月1日 0時0分0秒。
構造方法:
- public Date() -->將當前系統時間封裝成Date對象
- public Date(long date); -->將指定的毫秒值變成Date對象;代表的是距離國際標準時間毫秒值後的那個時間。(時差)
成員方法:
-
getTime();將日期對象轉換爲對應的毫秒值。
-
setTime();修改當前Date對象距離標準時間的毫秒值。
總結:
- 直接利用空參Date對象:獲取當前系統時間。
四.DateFormat類
所在的包:java.text.DateFormat
日期格式化類
概念
- 我們直接輸出Date對象可是看不太懂!於是java給出了這個類來初始化日期類。
- DateFormat是抽象類不能new對象。
- 使用的時候應該用它的子類SimpleDateFormat
構造方法:
SimpleDateFormat(String pattern)
pattern:格式;規則。
年 y
月 M
日 d
時 H
分 m
秒 s
標準格式:yyyy-MM-dd HH:mm:ss
成員方法:
- String format(Date date):傳遞的是日期對象,返回格式化後的字符串 -->格式化
- Date parse(String str):傳遞的是字符串。返回的是 Date對象,將符合規則的 字符串 ,變成Date對象–>解析
使用方法演示
public static void main(String[] args) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date();
System.out.println(simpleDateFormat.format(date)); //2020-03-12 16:04:26打印出當前系統時間
}
五.Calendar類
所在包:java.util
日曆類
概念:
爲什麼會有這個類?
Date要想單獨操作年,月,日等等比較麻煩。Calendar類卻十分的簡單!
- 是一個抽象類
- 方法都是靜態的
- 直接類名調用即可
方法:
Calendar getInstance() -->獲取Calendar對象 。
int get(int field) -->獲取日曆字段的值。
void set(int field,int value):給指定的月份
void add(int field,int value):給指定的日曆字段,加/減值。
參數field:日曆的字段,都是靜態常量,類名調用即可!
年:Year
月:MONTH
日:DAY_OF_MONTH …
使用方法
public static void main(String[] args) {
//獲取Calendar。
Calendar instance = Calendar.getInstance();
//調用Calendar中的get方法 參數:日曆字段YEAR
int YEAR= instance.get(Calendar.YEAR);
System.out.println(YEAR);//2020
//調用Calendar中的set方法
instance.set(Calendar.YEAR,1);
//再次獲取
int YEAR1= instance.get(Calendar.YEAR);
System.out.println(YEAR1);//1
//調用Calendar中的add方法
instance.add(Calendar.YEAR,1);//正數+,負數-
//再次獲取
int YEAR2= instance.get(Calendar.YEAR);
System.out.println(YEAR2);//2
}
六.Math
所在包:java.lang.Math
數學類
概念
- 方法都是靜態的,不能new對象 構造方法私有。
使用方法:
- 類名直接調用。
常用方法:
- int abs(int a) --> 求參數的絕對值返回int。
- double ceil(double a) —>向上取整返回double。
- double floor(double a) —>向下取整返回double。
- int round(float a) —>四捨五入返回int值。
- int max(int a,int b) —>返回兩個參數的最大值。
- int min(int a,int b) —>返回兩個參數的最小值。
七.system
所在包:java.lang.system
概念
- 方法都是靜態的
使用方法:
- 都是類名直接調用
常用方法:
- void exit(int status) —>退出jvm 參數status -->寫0就行
- long currenTimeMillis() —>獲取當前系統毫秒值 -->可以測試代碼效率。
- void arraycopy(Object src,int srcPos,dest,destPos,length)
—>複製老數組到新數組 —> 參數 src:老數組,srcPos:從原數組的那個索引考試複製,dest:目標數組,destPos:從目標數組哪個索引開始粘貼,length:複製多少個。