Object類
java.lang.Object 類是所有類的父類,它描述的所有方法子類都可以使用,在物件實體化的時候,最終找的父類就是Object,
如果一個類沒有特別指定父類, 那么默認則繼承自Object類,例如:
public class MyClass /*extends Object*/ {
// ...
}
根據JDK源代碼及Object類的API檔案,Object類當中包含的方法有11個,

toString方法
toString方法回傳該物件的字串表示,其實該字串內容就是物件的型別+@+記憶體地址值
由于toString方法回傳的結果是記憶體地址,而在開發中,經常需要按照物件的屬性得到相應的字串表現形式,因此也需要重寫它,
public class Person {
private String name;
private int age;
@Override
public String toString() {
return "Person{" + "name='" + name + '\'' + ", age=" + age + '}';
}
// 省略構造器與Getter Setter
}
在IntelliJ IDEA中,可以點擊 Code 選單中的 Generate… ,也可以使用快捷鍵 alt+insert ,點擊 toString() 選項,選擇需要包含的成員變數并確定,如下圖所示:
equals方法
呼叫成員方法equals并指定引數為另一個物件,則可以判斷這兩個物件是否是相同的,這里的“相同”有默認和自定義兩種方式,
默認地址比較
如果沒有覆寫重寫equals方法,那么Object類中默認進行 == 運算子的物件地址比較,只要不是同一個物件,結果必然為false,
物件內容比較
如果希望進行物件的內容比較,即所有或指定的部分成員變數相同就判定兩個物件相同,則可以覆寫重寫equals方法,
import java.util.Objects;
public class Person {
private String name;
private int age;
@Override
public boolean equals(Object o) {
// 如果物件地址一樣,則認為相同
if (this == o)
return true;
// 如果引數為空,或者型別資訊不一樣,則認為不同
if (o == null || getClass() != o.getClass())
return false;
// 轉換為當前型別
Person person = (Person) o;
// 要求基本型別相等,并且將參考型別交給java.util.Objects類的equals靜態方法取用結果
return age == person.age && Objects.equals(name, person.name);
}
}
這段代碼充分考慮了物件為空、型別一致等問題,但方法內容并不唯一,大多數IDE都可以自動生成equals方法的代碼內容,在IntelliJ IDEA中,可以使用 Code 選單中的 Generate… 選項,也可以使用快捷鍵alt+insert ,并選擇equals() and hashCode() 進行自動代碼生成,如下圖所示:

Date類
java.util.Date 類 表示特定的瞬間,精確到毫秒,
public Date() :分配Date物件并初始化此物件,以表示分配它的時間(精確到毫秒),
public Date(long date) :分配Date物件并初始化此物件,以表示自從標準基準時間(稱為“歷元(epoch)”,即1970年1月1日00:00:00 GMT)以來的指定毫秒數,
(由于我們處于東八區,所以我們的基準時間為1970年1月1日8時0分0秒,)
import java.util.Date;
public class Demo3{
public static void main(String[] args)
// 創建日期物件,把當前的時間
System.out.println(new Date()); // Tue Jul 28 21:21:01 CST 2020
// 創建日期物件,把當前的毫秒值轉成日期物件
System.out.println(new Date(0L)); // Thu Jan 01 08:00:00 CST 1970
}
}
常用方法:
public long getTime() 把日期物件轉換成對應的時間毫秒值,
DateFormat類
java.text.DateFormat 是日期/時間格式化子類的抽象類,我們通過這個類可以幫我們完成日期和文本之間的轉換,也就是可以在Date物件與String物件之間進行來回轉換,
由于DateFormat為抽象類,不能直接使用,所以需要常用的子類 java.text.SimpleDateFormat ,這個類需要一個模式(格式)來指定格式化或決議的標準,構造方法為:
創建SimpleDateFormat物件的代碼如:
import java.text.DateFormat;
import java.text.SimpleDateFormat;
public class Demo2{
public static void main(String[] args) {
// 對應的日期格式如:2020-07-28 21:30:37
DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
}
}
format方法:將Date物件格式化為字串,
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo{
public static void main(String[] args) {
Date date = new Date();
// 創建日期格式化物件,在獲取格式化物件時可以指定風格
DateFormat df = new SimpleDateFormat("yyyy年MM月dd日");
String str = df.format(date);
System.out.println(str); // 2020年7月28日
}
}
parse方法:將字串決議為Date物件,
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo04DateFormatMethod {
public static void main(String[] args) throws ParseException {
DateFormat df = new SimpleDateFormat("yyyy年MM月dd日");
String str = "2020年7月28日";
Date date = df.parse(str);
System.out.println(date); // Tue Jul 28 00:00:00 CST 2020
}
}
計算出一個人已經出生了多少天,
public static void function() throws Exception {
System.out.println("請輸入出生日期 格式 YYYY-MM-dd");
// 獲取出生日期,鍵盤輸入
String birthdayString = new Scanner(System.in).next();
// 將字串日期,轉成Date物件
// 創建SimpleDateFormat物件,寫日期模式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// 呼叫方法parse,字串轉成日期物件
Date birthdayDate = sdf.parse(birthdayString);
// 獲取今天的日期物件
Date todayDate = new Date();
// 將兩個日期轉成毫秒值,Date類的方法getTime
long birthdaySecond = birthdayDate.getTime();
long todaySecond = todayDate.getTime();
long secone = todaySecond-birthdaySecond;
if (secone < 0){
System.out.println("還沒出生呢");
} else {
System.out.println(secone/1000/60/60/24);
}
}
Calendar類
java.util.Calendar 是日歷類,在Date后出現,替換掉了許多Date的方法,該類將所有可能用到的時間資訊封裝為靜態成員變數,方便獲取,
常用方法:
public int get(int field) :回傳給定日歷欄位的值,
public void set(int field, int value) :將給定的日歷欄位設定為給定值,
public abstract void add(int field, int amount) :根據日歷的規則,為給定的日歷欄位添加或減去指定的時間量,
public Date getTime() :回傳一個表示此Calendar時間值(從歷元到現在的毫秒偏移量)的Date物件
Calendar類中提供很多成員常量
get/set方法
import java.util.Calendar;
public class Demo{
public static void main(String[] args) {
// 創建Calendar物件
Calendar cal = Calendar.getInstance();
// 設定年
int year = cal.get(Calendar.YEAR);
// 設定月
int month = cal.get(Calendar.MONTH) + 1;
// 設定日
int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
System.out.println(year + "年" + month + "月" + dayOfMonth + "日");//2020年7月28日
cal.set(Calendar.YEAR, 2030);
year = cal.get(Calendar.YEAR);
System.out.print(year + "年" + month + "月" + dayOfMonth + "日");//2030年7月28日
}
}
add方法
add方法可以對指定日歷欄位的值進行加減操作,如果第二個引數為正數則加上偏移量,如果為負數則減去偏移量,代碼如下:
import java.util.Calendar;
public class Demo{
public static void main(String[] args) throws ParseException {
// 創建Calendar物件
Calendar cal = Calendar.getInstance();
// 設定年
int year = cal.get(Calendar.YEAR);
// 設定月
int month = cal.get(Calendar.MONTH) + 1;
// 設定日
int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
System.out.println(year + "年" + month + "月" + dayOfMonth + "日");//2020年7月28日
// 使用add方法
cal.add(Calendar.DAY_OF_MONTH, 2); // 加2天
dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
cal.add(Calendar.YEAR, -3); // 減3年
year = cal.get(Calendar.YEAR);
System.out.print(year + "年" + month + "月" + dayOfMonth + "日"); // 2017年7月30日
}
}
getTime方法
Calendar中的getTime方法并不是獲取毫秒時刻,而是拿到對應的Date物件,
public class Demo{
public static void main(String[] args) throws ParseException {
Calendar cal = Calendar.getInstance();
Date date = cal.getTime();
System.out.println(date); // Tue Jul 28 22:33:30 CST 2020
}
}
西方星期的開始為周日,中國為周一,
在Calendar類中,月份的表示是以0-11代表1-12月,
System類
currentTimeMillis方法
currentTimeMillis方法是 獲取當前系統時間與1970年01月01日00:00點之間的毫秒差值
import java.util.Date;
public class Demo{
public static void main(String[] args) {
//獲取當前時間毫秒值
System.out.println(System.currentTimeMillis()); // 1595947059820
}
}
arraycopy方法
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) :將陣列中指定的資料拷貝到另一個陣列中,

import java.util.Arrays;
public class Demo11SystemArrayCopy {
public static void main(String[] args) {
int[] src = new int[]{1,2,3,4,5};
int[] dest = new int[]{6,7,8,9,10};
System.arraycopy( src, 0, dest, 0, 3);
/*代碼運行后:兩個陣列中的元素發生了變化
src陣列元素[1,2,3,4,5]
dest陣列元素[1,2,3,9,10]
*/
}
}
包裝類
Java提供了兩個型別系統,基本型別與參考型別,使用基本型別在于效率,然而很多情況,會創建物件使用,因為物件可以做更多的功能,如果想要基本型別像物件一樣操作,就可以使用基本型別對應的包裝類

裝箱與拆箱
基本型別與對應的包裝類物件之間,來回轉換的程序稱為”裝箱“與”拆箱“:
裝箱:從基本型別轉換為對應的包裝類物件,
拆箱:從包裝類物件轉換為對應的基本型別,
基本數值---->包裝物件
Integer i = new Integer(4);//使用建構式
Integer ii = Integer.valueOf(4);//使用包裝類中的valueOf方法
包裝物件---->基本數值
int num = i.intValue();
自動裝箱與自動拆箱
從Java 5(JDK 1.5)開始,基本型別與包裝類的裝箱、拆箱動作可以自動完成
Integer i = 4;//自動裝箱,相當于Integer i = Integer.valueOf(4);
i = i + 5;//等號右邊:將i物件轉成基本數值(自動拆箱) i.intValue() + 5;
//加法運算完成后,再次裝箱,把基本數值轉成物件,
基本型別與字串之間的轉換
基本型別轉換String
基本型別直接與””相連接即可;如:34+""
String轉換成對應的基本型別
除了Character類之外,其他所有包裝類都具有parseXxx靜態方法可以將字串引數轉換為對應的基本型別:
- public static byte parseByte(String s) :將字串引數轉換為對應的byte基本型別,
- public static short parseShort(String s) :將字串引數轉換為對應的short基本型別,
- public static int parseInt(String s) :將字串引數轉換為對應的int基本型別,
- public static long parseLong(String s) :將字串引數轉換為對應的long基本型別,
- public static float parseFloat(String s) :將字串引數轉換為對應的float基本型別,
- public static double parseDouble(String s) :將字串引數轉換為對應的double基本型別,
- public static boolean parseBoolean(String s) :將字串引數轉換為對應的boolean基本型別,
public class Demo{
public static void main(String[] args) {
int num = Integer.parseInt("100");
}
}
注意:如果字串引數的內容無法正確轉換為對應的基本型別,則會拋出 java.lang.NumberFormatException
例外
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/125375.html
標籤:Java
上一篇:mybatis之if判斷
