第2章 包裝類

黄舟
發布: 2016-12-21 13:05:27
原創
1874 人瀏覽過

我們知道java是物件導向的語言,其精髓之一是可以使用多態性,提高程式的彈性度。

但是java中有8個基本類 型:byte,short,int,long,float,double,char,boolean。它們是以值的形式存在於記憶體中,而不是物件。

它們不 是Object的子類,不能參與物件導向的開發。在java1.5版本以前以下的程式碼是不能通過的.

package com.souvc.api;public class Test {    public static void main(String[] args) {
        String str = "hello";
        doSome(str);// 可以,因为String是Object的子类

        int i = 1;        // 程序编译不通过,原因在于int不是Object的子类,不能使用多态性。        doSome(i);
    }    public static void doSome(Object o) {        // ....    }
}
登入後複製

問題出現的原因就是基本型別int沒有繼承關係,它不是Object的子類。所以,若想讓基本型別以物件的形式存在,我們就需要定義一個類別 Integer,然後用其實例來描述一個基本型別int。

這樣的好處在於,我們使用物件來描述基本類型數據,而類別又是繼承自Object的。從而可以讓基底 本類型參與物件導向的開發。好在,像Integer這樣的類別不需要我們定義,因為java已經提供了8中基本類型對應的包裝類別。

註:java1.5版本後出現了自動拆裝箱特性,上述程式碼可以正常編譯通過。自動拆裝箱我們後面會詳細描述。

對於8個基本類型,java提供了他們對應的包裝類別:

 

基本型別包裝類

 

byte java.lang.Byte

檢查的父類別是Object之外,其餘的都是繼承自:java.lang.Number

 

Number是一個抽象類別。本身不能實例化。 Number 的子類別必須提供將表示的數值轉換為byte、double、float、int、long 和short 的方法

比如:

abstract double doubleValue() 以double形式傳回指定的數值

abstract int intint(以int形式傳回指定的數值

abstract float floatValue() 以float形式傳回指定的數值

剩下的抽象方法請參閱API文件:java.lang.Number 。

 

 

現在我們來學習如何在基本類型與包裝類別之間相互轉換。

當我們需要將基本型別轉換為包裝類別時,我們可以呼叫包裝類別的一個靜態方法valueOf():

 

Integer i = Integer.valueOf(1);

Double d = Double.valueOf(1.1 );

 

當我們需要將包裝類別轉換為基本型別時,我們可以使用包裝類別的方法xxxValue()方法(這裡不同的包裝類別方法名稱不完全一致,但都是以Value結尾):

Integer i = new Integer(1);int n = i.intValue();

Double d = new Double(1.1);double dn = d.doubleValue();

 

雖然我們可以通過上述的方法在基本型別與包裝類別之間相互轉換。但是在實際編寫程式碼時相對還是比較麻煩的。 java在1.5版本後推出了一個新的特性:自動拆裝箱。


以下程式碼在java1.4時編譯不通過,但在java1.5之後可以:

int i = new Integer(1);//可以自動將包裝類別轉換為基本型別 自動拆箱

Integer in = 1;//可以自動將基本型別轉換為包裝類別 自動裝箱

 


那麼java是如何實現的自動拆裝箱呢?

事實上JVM不支援此特性,自動拆裝箱只是編譯器在編譯過程中的"預處理"操作。編譯器在看到需要在包裝類別與基本型別之間轉換時,會在編譯為字節碼時進行變更:

原始碼中編譯後的字節碼中

Integer a = 100 => Integer a = Integer.valueOf(100);

Integer b = 200 => Integer b = Integer.valueOf(200);


Integer c = a+b => Integer c = Integer.valueOf (Integer ) + bf .intValue( ));

double d = c => double d = c . doubleValue( );

 

 

2.1 Integer「整數類別34


2.1.1 構造方法-Integer類別的建構方法34
2.1.2 常數-Integer類別的常數34
2.1.3 bitCount方法-取得二進位補碼中1的數量34
2.1.3 bitCount方法-取得二進位補碼中1的數量34
2.1.4〔2. ——取得byte型別的值35
2.1.5 compareTo方法-比較整數35
2.1.6 decode方法-字串解碼為int型別35
2.1.7 doubleValue方法-傳回double數值36
2.1.7 doubleValue方法-傳回double數值36
2.1.8 equals方法-判斷整數物件相等36
2.1.9 floatValue方法-取得float數值37
2.1.10 getInteger方法-取得整數的系統屬性值37
2.1.11 hashCode方法-產生整數的雜湊碼39
2.1.12 highestOneBit方法-取得整數二進位最高位元1的索引39
2.1.13 intValue()方法-取得int值40
2.1.14 longValue方法-取得long值40
2.1.1555 ——取得整數二進位最低位1的索引41
2.1.16 parseInt方法-將字串解析為int值41
2.1.17 reverse方法-反轉整數二進位補碼的位元順序43
2.1.18 reverseBytes方法-反轉整數位元組的順序44
2.1.19 shortValue方法-取得short值44
2.1.20 signum方法-取得整數符號44
2.1.21 toBinaryString方法-產生整數的二進位字串45
2.1.22 toHexString方法——生成整數的十六進製字符串45
2.1.23 toOctalString方法——生成整數的八進製字符串46

2.1.24 toString方法——生成整數的十進製字符串47

2.1 .25 valueOf方法-建立Integer物件49

2.2 Long類別-長整型類別50


2.2.1 建構方法-Long類別的建構方法51

2.2.1 建構方法-Long類別的建構方法51
2.2.2『2.2.2〜2.2.2〜2.2.2〜2.2.2〜2.2.2〜2.2.2〜2.2.2〜2.2.2〜2.2.2〜2.2.2〜2.2.2]常數的常數51
2.2.3 bitCount方法-取得二進位補碼中1的數量51
2.2.4 byteValue方法-取得byte值51
2.2.5 compareTo方法-比較長整數52
2.2.6decode字串解碼為long型別52
2.2.7 doubleValue方法-傳回double數值53
2.2.8 equals方法-判斷長整數物件相等53
2.2.9 floatValue方法-取得float數值相等53
2.2.9 floatValue方法-取得float數值值方法-取得長整數的系統屬性值54
2.2.11 hashCode方法-產生長整數的雜湊碼56
2.2.12 highestOneBit方法-取得長整數二進位最高位元1的索引56
2.2.13 int ()方法-取得int值57
2.2.14 longValue方法-取得long值57
2.2.15 lowestOneBit方法-取得長整數二進位最低位1的索引57
2.2.16 parseLong方法-將字串解析為long值58
2.2.17 reverse方法-反轉長整數二進位補碼的位元順序60
2.2.18 reverseBytes方法-反轉長整數位元組的順序60
2.2.19shortValue方法-取得short值61
2.2.20 signum方法-取得長整數符號61
2.2.21 toBinaryString方法-產生長整數的二進位字串61

2.2.22 toHexString方法-產生長整數的十六進位字串62

2.2.23 toOctalString方法-產生長整數的八進位字串62
2.2.24 toString方法-產生長整數的十進位字串63

2.2.25 valueOf方法-建立Long物件65Short類別-短整型類別67



2.3.1 構造方法-Short類別的建構方法67
2.3.2 常數-Short類別的常數67
2.3.3compareTo方法-比較短整數類型的常數67
2.3.3 compareTo方法-比較短整數67333. .4 decode方法-字串解碼為short型別68
2.3.5 doubleValue方法-傳回double數值68
2.3.6 equals方法-判斷短整數物件數位69
2.3.8 hashCode方法-產生短整數的雜湊碼69
2.3.9 intValue()方法-取得int值70
2.3.10 longValue方法-取得long值70
2.3.11 parseortort方法— —將字串解析為short值70
2.3.12 reverseBytes方法-反轉短整數位元組的順序72
2.3.13 shortValue方法-取得short值72
2.3.14 toString方法-產生短整數的方法-產生短整數的方法-產生短整數的方法十進位字串73
2.3.15 valueOf方法-建立Short物件73


2.4 Boolean類別-布林類別75


2.4.1 類型建構方法-Booleanlean的構造方法-Boolean. Boolean類別的常數75
2.4.3 booleanValue方法-取得boolean值76
2.4.4 compareTo方法-比較布林值76
2.4.5 equals方法-判斷相等77
2.4.6 站方法-取得布林方法-取得布林方法-取得布林方法-取得布林方法-取得布林方法-取得布林方法-取得布林方法-取得布林方法-取得布林方法-取得布林方法-取得布林方法-取得布林方法吧類型的系統屬性值77
2.4.7 hashCode方法-產生布林物件的雜湊碼78
2.4.8 parseBoolean方法-將字串解析成boolean值78
2.4.9 toString方法-產生布林值的字串78
2.4.10 valueOf方法-建立布林物件79


2.5 Byte類別-位元組物件80


2.5.1 建構法-Byte類別的建構方法80
2.5.2 常數-Bytearec20
2.5.3㟎2.5.3〵類的常數物件80
2.5.4 decode方法-將字串解碼為Byte值81
2.5.5 doubleValue方法-取得double值82
2.5.6 equals方法-判斷位元組相等82
2.5.7 —取得float值83
2.5.8 hashCode方法-產生位元組物件的雜湊碼83
2.5.9 intValue方法-取得int值83
2.5.10 longValue方法-取得long值83
2.5.11 parseByte方法-將字串解析為byte值84
2.5.12 shortValue方法-取得short值85
2.5.13 toString方法-產生位元組值的十進位字串85
2.5.14valueOfvalueOfvalueOf] Byte物件86


2.6 Character類別-字元類別88


2.6.1 建構方法-Character類別的建構方法88
2.6.2 常數-Character類別的方法常數-88
2.6.2 常數-Character類別的方法常數計算指定字元代碼點的數量89
2.6.4 charValue方法-取得char值89
2.6.5 codePointAt方法-取得字元陣列元素的代碼點90
2.6.6 codePointBefore方法-取得字元陣列索引前一個元素的代號點91
2.6.7 codePointCount方法-傳回字元陣列的子數組中碼點的數量93
2.6.8 compareTo方法-比較字元物件94
2.6.9 equals方法-判斷字元物件相等95
2.6.10 getNumericValue方法-傳回字元表示的int值95
2.6.11 getType方法-傳回一個指示字元的常規類別的值97
2.6.12 hashCode方法-產生字元物件的雜湊碼97
2.6.12 hashCode方法-產生字元物件的雜湊碼97
2.6.13 isDefined方法-判斷是否為Unicode字元98
2.6.14 isDigit方法-判斷是否為數位字元98
2.6.15 isLetter方法-判斷是否為字母字元999998
2.6.15 isLetter方法-判斷是否為字母字元9999999998分。是否為小寫字元100
2.6.17 isUpperCase方法-判斷是否為大寫字元100
2.6.18 toLowerCase方法-轉換為小寫字元101

2.6.19 toUpperCase方法-轉換為小寫字元101

2.6.19 toUpperCase方法-轉換為大寫字元107. ——雙精確度數字類102

2.7.1 構造方法——Double類的構造方法102
2.7.2 常數——Double類的常數102
2.7.3 byteValue方法——獲取byte值102
2.7.3 byteValue方法——獲取byte值102
4 compare方法-比較雙精確數字物件103
2.7.5 compareTo方法-比較兩個Double物件103
2.7.6 intValue方法-將此Double值以int形式傳回104
2.7.7 doubleleleleleleh-ToLongBits方法-ToLongBits方法-ToLongBits方法-ToLongBits方法-ToLongBits方法-ToLongBits方法-ToLongBits方法-ToLongBits一樣”傳回指定浮點值的表示形式104
2.7.8 doubleToRawLongBits方法-保​​留NaN值傳回指定浮點值的表示方式105
2.7.9 doubleValue方法-取得double值105
2.7.9 doubleValue方法-取得double值105
2.7.10eubleals Double物件是否相等106
2.7.11 floatValue方法-取得float值107
2.7.12 hashCode方法-產生Double 物件的雜湊碼107
2.7.13 isInfinite方法-產生Double 物件的雜湊碼107
2.7.13 isInfinite方法-資料
2.7.14 isNaN方法-判斷Double值是否為非數字值108
2.7.15 longBitsToDouble方法-傳回定位表示形式的double值109
2.7.16 longValue方法-取得long值110
值117. 17 parseDouble方法-將字串解析為double值110
2.7.18 shortValue方法-取得short值110
2.7.19 toHexString方法-產生雙精確數字的十六進位字串111

2.7.2012.7.方法-產生雙精確度數字的十進位字串112

2.7.21 valueOf方法-建立Double物件112

🎜2.8 Float-浮點類別113🎜


2.8.1 構造方法-Float類別的建構方法113
2.8.2 常數-Float類別的常數114
2.8.3 byteValue方法-取得物件值114
2.8.4、) 114
2.8.5 compareTo方法-比較兩個Float物件所表示的數值115
2.8.6 doubleValue方法-取得double值115
2.8.7 equals方法-判斷Double11155
2.8.7 equals方法-判斷Double11158525115853535353553535,053115 月。 ——傳回浮點值的表示形式116
2.8.9 floatToRawIntBits方法——保留非數字值回傳指定浮點值的表示形式117
2.8.10 floatValue方法——取得float值118
2.8.10 floatValue方法——取得float值118
2.8.11 hashCode —傳回Float物件的雜湊碼118
2.8.12 intBitsToFloat方法-傳回指定位元表示形式的float值118
2.8.13 intValue方法-取得int值119
2.8.14 isInfinite大小是否為無窮大120
2.8.15 isNaN方法-判斷Float值是否為非數字值120
2.8.16 longValue方法-取得long值121
2.8.17 parseFloat方法-將字串值解析成float 121
2.8.18 shortValue方法-取得short值122
2.8.19 toHexString方法-產生浮點數的十六進位字串122
2.8.20 toString方法-產生浮點數的十進位字串122123🟎2. .21 valueOf方法-創建浮點數物件124

 以上就是包裝類別的內容,更多相關內容請關注PHP中文網(www.php.cn)! 


相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板