1. 程式人生 > >(1)Object類 (2)包裝類和數學處理類 (3)String類

(1)Object類 (2)包裝類和數學處理類 (3)String類

lean 由於 哈希 出現 接口類 HA 支持 indexof 類的成員

1.Object類
1.1 基本概念
java.lang.Object類是Java類層次結構的根類,任何類都是Object類的直接/間接子類。

1.2 常用的方法(重點)
Object() - 無參構造方法
boolean equals(Object obj) - 用於判斷調用對象是否和參數對象相等。
- 該方法默認比較兩個對象的地址,與 == 運算符的效果等價。
- 當需要比較對象的內容時則重寫該方法,重寫該方法後記得重寫hashCode()方法。
int hashCode() - 用於獲取調用對象的哈希碼值(內存地址的編號)。
- 當兩個對象調用equals()方法相等時,則各自調用該方法得到的結果必須相同。
- 當兩個對象調用equals()方法不相等時,則各自調用該方法得到的結果應該不相同。
- 為了滿足上述協定,需要重寫該方法。
String toString() - 用於返回調用對象的字符串形式。
- 默認字符串組成:包名.類名@哈希碼的十六進制
- 為了打印成員變量信息則需要重寫該方法
- 當使用print()/println()打印引用變量時/使用字符串連接引用時,自動調用該方法

2.包裝類和數學處理類
如:
Person p = new Person(); - 聲明一個Person類型的引用指向Person類型的對象
int num = 10; - 聲明一個int類型的變量num初始值為10
Java是一門純面向對象的編程語言。

2.1 包裝類的由來
在某些特殊場合(集合)中要求所有存取的數據都必須是對象,對於基本數據類型的變量來說不滿足此要求,為了使得基本數據類型的變量也能夠使用就需要進行對象化處理,此時就需要借助包裝類。

2.2 Integer類(重點)
(1)基本概念
java.lang.Integer類用於包裝int類型的變量,也就是讓int類型變量作為該類的成員變量
該類由final關鍵字修飾表示不能被繼承。

(2)常用的方法
Integer(int value) - 根據參數指定整數構造對象。
Integer(String s) - 根據參數指定字符串構造對象。
該類重寫了equals()、hashCode()以及toString()方法。
int intValue() - 用於返回調用對象中的數值。
static Integer valueOf(int i) - 根據參數指定的整數得到Integer類型對象並返回。
static int parseInt(String s) - 用於將String類型的字符串轉換為int類型的整數。

(3)裝箱和拆箱
裝箱主要指從int類型向Integer類型的轉換。
拆箱主要指從Integer類型向int類型的轉換。
從jdk1.5開始支持自動裝箱和自動拆箱的機制。

(4)自動裝箱池(盡量理解)
為了提高自動裝箱的效率,在Integer類的內部提供了一個自動裝箱池,將-128到127之間的整數提前裝箱完畢,若程序中需要使用該範圍的整數則直接從池中獲取並使用而無需再次裝箱,若程序中使用該範圍之外的數據則需要單獨裝箱。

2.3 BigDecimal類(查手冊會用即可)
(1)基本概念
由於float類型和double類型都不能實現精確運算,此時可以使用java.math.BigDecimal類型取代之。

(2)常用的方法
BigDecimal(String val) - 根據參數指定的字符串來構造對象。
BigDecimal add(BigDecimal augend)
- 用於計算調用對象和參數對象的和並返回。
BigDecimal subtract(BigDecimal subtrahend)
- 用於計算調用對象和參數對象的差並返回。
BigDecimal multiply(BigDecimal multiplicand)
- 用於計算調用對象和參數對象的積並返回。
BigDecimal divide(BigDecimal divisor)
- 用於計算調用對象和參數對象的商並返回。

2.4 BigInteger類(查手冊會用即可)
(1)基本概念
當需要在程序中描述比long類型範圍還大的整數時,則使用java.math.BigInteger類型加以描述。

(2)常用的方法
BigInteger(String val) - 根據參數指定的字符串內容來構造對象。
BigInteger add(BigInteger val)
- 用於計算調用對象和參數對象的和並返回。
BigInteger subtract(BigInteger val)
- 用於計算調用對象和參數對象的差並返回。
BigInteger multiply(BigInteger val)
- 用於計算調用對象和參數對象的積並返回。
BigInteger divide(BigInteger val)
- 用於計算調用對象和參數對象的商並返回。
BigInteger[] divideAndRemainder(BigInteger val)
- 用於計算調用對象和參數對象的商和余數組成數組並返回。

3.String類(重中之重)
3.1 基本概念
java.lang.String類用於描述字符串,Java程序中所有字符串字面值都可以使用該類描述。
該類描述的字符串內容是個常量,不可以更改,而且該類由final修飾不能被繼承。
如:
class MyString extends String{} => error
String s1 = "abc"; => "abc"是個常量,不可以更改。

3.2 常量池(原理、盡量理解)
由於String類型描述的字符串內容是個常量,若每次出現相同的字符串都單獨保存則會造成內存空間的浪費,為了提高性能,Java虛擬機會將每次出現的字符串內容保存到常量池中,下次若出現相同的字符串內容則直接從池中取出使用即可。

如:
String s1 = "abc"; abc
String s2 = "bcd"; bcd
String s3 = "abc";

筆試題:
String s1 = ""; 和 String s1 = null; 之間有區別嗎?
解析:
其中前者擁有字符串對象,但該字符串對象的內容為空;
其中後者連字符串對象都沒有,後者調用方法時會引發空指針異常;

3.3 常用的方法(練熟、記住)
(1)常用的構造方法
String() - 使用無參的方式構造空字符串對象。
String(byte[] bytes) - 根據參數指定的byte數組來構造對象。
String(byte[] bytes, int offset, int length)
- 使用bytes數組中從offset位置開始的length個字節來構造對象。
String(char[] value) - 根據參數指定的char數組來構造對象。
String(char[] value, int offset, int count)
- 使用value數組中從offset位置開始的count個字符來構造對象。
String(String original) - 根據參數指定的字符串內容來構造對象。

(2)常用的成員方法
該類重寫了equals()、hashCode()以及toString()方法。
char charAt(int index) - 根據參數指定的下標返回對應的單個字符。
int length() - 用於返回當前字符串的長度。

int compareTo(String anotherString) - 用於比較調用對象和參數對象的大小關系。
- 使用調用對象和參數對象中第一個字符起依次做減法運算
- 若第一個字符能確定大小,則後續字符不用比較
- 若第一個字符不能確定大小,則使用下一個對應位置的字符比較大小。
- 直到其中一個字符串的所有字符比較完畢後也沒有確定大小,則由長度來決定大小。
- 若當前字符串大則返回正數;若當前字符串小則返回負數;若相等則返回零;
int compareToIgnoreCase(String str) - 不考慮大小寫,也就是‘a‘和‘A‘是相等的關系。

boolean contains(CharSequence s) - 用於判斷當前字符串是否包含參數指定的內容。
- 其中參數是接口類型,因此實參需要傳遞實現類的對象,而String類就實現了該接口
boolean endsWith(String suffix)
- 判斷當前字符串是否以參數指定的內容為結尾。
boolean startsWith(String prefix)
- 判斷當前字符串中是否以參數指定的內容為開頭。
String toLowerCase()
- 用於將當前字符串中所有字符轉換為小寫。
String toUpperCase()
- 用於將當前字符串中所有字符轉換為大寫。
String trim()
- 用於去除當前字符串中兩端的空白字符。

boolean equals(Object anObject)
- 用於比較字符串內容是否相等並返回;
boolean equalsIgnoreCase(String anotherString)
- 用於比較字符串內容是否相等並返回,不考慮大小寫,如:‘A‘和‘a‘是相等。

byte[] getBytes() - 用於將當前字符串內容轉換為byte數組並返回。
char[] toCharArray() - 用於將當前字符串內容轉換為char數組並返回。

int indexOf(int ch) - 用於返回當前字符串中參數ch指定的字符第一次出現的下標。
int indexOf(int ch, int fromIndex) - 用於從fromIndex位置開始查找ch指定的字符。
- 上述方法若查找失敗,則返回-1.
int indexOf(String str) - 用於查找參數str指定的字符串並返回下標。
int indexOf(String str, int fromIndex) - 用於從fromIndex位置開始查找。

int lastIndexOf(int ch) - 用於返回參數ch指定的字符最後一次出現的下標。
int lastIndexOf(int ch, int fromIndex)
- 用於從fromIndex位置開始查找ch指定字符出現的下標,反向搜索的第一次。
int lastIndexOf(String str) - 用於返回str指定字符串最後一次出現的下標。
int lastIndexOf(String str, int fromIndex)
- 用於從fromIndex位置開始反向搜索的第一次。

String substring(int beginIndex)
- 用於獲取當前字符串中從beginIndex位置開始的子字符串並返回。
String substring(int beginIndex, int endIndex)
- 用於獲取當前字符串中從beginIndex位置開始到endIndex結尾的子字符串並返回。

(1)Object類 (2)包裝類和數學處理類 (3)String類