Java語言進階 #常用API(二) #Day12 #Object類 #時間日期類 #System類 #StringBuilder #包裝類

一、Object類

1. toString

在這裏插入圖片描述
在這裏插入圖片描述

1.1 重寫toString方法

我們希望直接打印出該對象的屬性。以這種格式:類名{成員變量名=成員變量值, ...}
在這裏插入圖片描述

在這裏插入圖片描述

1.2 重寫toString方法總結

上面的代碼,可以用快捷鍵快速插入: Alt Insert
在這裏插入圖片描述
在這裏插入圖片描述

2. equals

equals可以比較兩個地址值是否相等
在這裏插入圖片描述

2.1 重寫equals方法1

比較地址值和==沒有什麼區別,所以我們應該重寫equals方法,讓其可以比較值。
分析一波:

  1. 調用equals有一個隱含的多態,man1和man2實際屬於object類
  2. 要知曉對象屬性,要使用向下轉型
    在這裏插入圖片描述
  • 再運行一次
    在這裏插入圖片描述

2.2 重寫equals方法2

如果obj不是Person類型呢?對,用instanceof進行判斷
在這裏插入圖片描述

2.3 重寫equals方法3

有一些特殊的值,可以直接給出結果,提高程序效率。

  1. null直接返回false即可
  2. 如果對象是本身 直接返回true
    在這裏插入圖片描述

2.4 重寫equals方法總結

上面的代碼,可以用快捷鍵快速插入: Alt Insert
在這裏插入圖片描述
在這裏插入圖片描述

2.5 Objects

在這裏插入圖片描述
這個Objects是個什麼鬼?我們用Ctrl點進去看一下源碼:
在這裏插入圖片描述
大致是說,這是一個關於Object類的一個靜態工具集。我們再看向equals方法:
在這裏插入圖片描述

  1. 如果a的地址值直接等於b的地址值,短路返回true
  2. 如果a不等於null時,輸出a.equals(b)的值

a.equals(b)有一個缺點。當a爲null時,會產生空指針異常。Objects的equals可以防止空指針異常。

二、時間日期類

1. Date

表示特點的瞬間 ,精確到毫秒(ms, 1000ms = 1s)

  • 毫秒值可以對日期時間進行直接計算
  • System.currentTimeMillis()返回一個Long類型數。這個數是從1970-01-01 00:00:00(英國格林威治 標準時間)迄今所經過的毫秒數。(中國屬於東八區,要加八小時)
  • 換算關係: 1day = 864E+5

2. Date的使用

構造方法(空參): 顯示當前日期
在這裏插入圖片描述
構造方法(全參): 顯示輸入的毫秒值對應的時間(L類型)
在這裏插入圖片描述
轉換爲毫秒值:
在這裏插入圖片描述

3. DateFormat

DateFormat是日期時間格式化的抽象類。功能是使Date和String

  • 格式化: 使Date按特定的格式轉化爲String
    在這裏插入圖片描述

  • 解析: 按照指定的格式,把String轉換爲Date
    在這裏插入圖片描述

3. SimpleDateFormat使用

構造方法: DateFormat是一個抽象類,它有一個直接子類SimpleDateFormat
在這裏插入圖片描述
格式: 比如==“yyyy年MM月DD日 HH小時mm分鐘ss秒”==
在這裏插入圖片描述

3.1 格式化

  1. 創建對象
  2. 使用format()方法
    在這裏插入圖片描述

3.2 解析

  1. 創建對象
  2. 使用parse()成員方法
    在這裏插入圖片描述

4. Calendar

日曆類是一個抽象類,它裏面有一個很好用的靜態方法getInstance()可以直接創建日曆對象(返回一個Calendar對象),而不需要通過直接子類
**加粗樣式**

4.1 Calendar創建

在這裏插入圖片描述

4.2 Calendar常用方法

4.2.1 get方法

獲取指定字段的值,比如年份,月份
在這裏插入圖片描述
int field: Calendar類對象,可以使用Calendar類靜態成員變量獲取(以下來自Calendar源碼):

PS: 其實就是代號
在這裏插入圖片描述
在這裏插入圖片描述
注意: 這裏面的月份是從0開始的

4.2.2 set方法

設置指定字段的值
在這裏插入圖片描述
在這裏插入圖片描述


set有一個重載形式: set(年, 月, 日)
在這裏插入圖片描述

4.2.3 add

給指定的字段,增加/減少指定的值
在這裏插入圖片描述
在這裏插入圖片描述

4.2.4 getTime

把日曆對象,轉換爲日期對象
在這裏插入圖片描述
在這裏插入圖片描述

三、System類

System用以獲取系統相關信息或進行系統級操作
在這裏插入圖片描述
System不能被實例化,同時擁有許多可以直接使用的靜態方法

1. currentTimeMillis

常用該方法,記錄程序運行時間。

  • (對程序進行優化時,可以根據各部分的耗時和理想耗時的差距,確定優化方案)
  • (可以進行時間複雜度對比)
    在這裏插入圖片描述
    在這裏插入圖片描述

2. arraycopy

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

四、StringBuilder

StringBuilder又稱爲字符串緩存區
在這裏插入圖片描述

1. 爲什麼要使用StringBuilder

  • 字符串底層是被final修飾的數組,所以它不可變
private final byte[] values;
  • 進行字符串的相加,內存中就會產生多個字符串,佔用空間多,效率低下

在這裏插入圖片描述


StringBuilder字符串緩存區,可以提高字符串的操作效率。(可以理解爲可變字符串)

  • 底層也是數組,但是沒有被final修飾
byte[] value = new byte[16];  // 初始容量是16

在這裏插入圖片描述
可以看到,StringBuilder自始至終就一個數組(StringBuilder容器),佔用空間少,效率高(超過16會自動擴容)

2. 構造方法

在這裏插入圖片描述

3. append方法

追加方法,返回本身(所以直接調用就行,不用接收返回值)
append(Object vlue)
在這裏插入圖片描述
接收任意對象作參數:
在這裏插入圖片描述
返回值是本身的,可以使用鏈式編程:
剛纔那些代碼,可以寫成這樣
在這裏插入圖片描述

4. toString

StringBuilderSting可以相互轉化

  1. 構造方法: Sting --> StringBuilder
    在這裏插入圖片描述
  2. toString: StringBuilder --> Sting
    在這裏插入圖片描述

五、包裝類

還記得ArrayList只能接收引用數據類型時,我們是怎麼傳遞基本數據類型的?答,使用對應的包裝類

1. 什麼是包裝類

包裝類: 基本數據類型雖然使用方便,但是並沒有對應的方法來操作這些數據。於是,可以使用一個類,把基本數據的類型裝起來,在類中定義一些方法,這個類就叫包裝類

包裝類在java.lang包下,不需要導包
=+對應的包裝類 = 基本數據類型 + 對應的操作方法

基本類型(基本類型) 包裝類(引用類型)
byte Byte
short Short
int Integer
long Long
floot Floot
double Double
char Character
boolean Boolean

2. 裝箱與拆箱

裝箱: 基本類型 --> 對應的包裝類
拆箱: 包裝類 --> 對應的基本類型

下面以Integerint爲例

2.1 裝箱

裝箱,可以採用構造方法或成員方法

  • 構造方法:
    在這裏插入圖片描述
    注意: 第二個構造方法,傳入的是諸如"100"之類的字符串。如果是"a",則會報錯。
  • 成員方法: 靜態方法直接使用
    在這裏插入圖片描述
    在這裏插入圖片描述

劃線,表示該方法已廢棄

2.2 拆箱

拆箱,只有一個方法
在這裏插入圖片描述
在這裏插入圖片描述

3. 自動裝箱與拆箱

JDK1.5之後,基本數據類型和包裝類之間,可以互相自動地拆箱和裝箱。
在這裏插入圖片描述

4. 基本類型和字符串相互轉化

4.1 基本類型 --> 字符串

  1. 基本類型加上一個空字符串(工作中常用)123+""123 + ""
  2. 包裝類的靜態方法toString(不是Object類的,是重載後的)
  3. String類的valueOf靜態方法

在這裏插入圖片描述

4.2 字符串 --> 基本類型

使用包裝類型的靜態方法,parseXXX()
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章