亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

第2章 包裝類

2019-11-14 15:10:12
字體:
來源:轉載
供稿:網友

我們知道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

short java.lang.Short

int java.lang.Integer

long java.lang.Long

float java.lang.Float

double java.lang.Double

char java.lang.Character

boolean java.lang.Boolean

 

其中除了Character與Boolean的父類是Object之外,其余的都是繼承自:java.lang.Number

 

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

比如:

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

abstract int intValue() 以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 (a.intValue( ) + b.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.4 byteValue方法——獲取byte類型的值 35
2.1.5 compareTo方法——比較整數 35
2.1.6 decode方法——字符串解碼為int類型 35
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.15 lowestOneBit方法——獲取整數二進制最低位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.2 常量——Long類的常量 51
2.2.3 bitCount方法——獲取二進制補碼中1的數量 51
2.2.4 byteValue方法——獲取byte值 51
2.2.5 compareTo方法——比較長整數 52
2.2.6 decode方法——字符串解碼為long類型 52
2.2.7 doubleValue方法——返回double數值 53
2.2.8 equals方法——判斷長整數對象相等 53
2.2.9 floatValue方法——獲取float數值 54
2.2.10 getLong方法——獲取長整數的系統屬性值 54
2.2.11 hashCode方法——生成長整數的哈希碼 56
2.2.12 highestOneBit方法——獲取長整數二進制最高位1的索引 56
2.2.13 intValue()方法——獲取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.19 shortValue方法——獲取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對象 65


2.3 Short類——短整型類 67


2.3.1 構造方法——Short類的構造方法 67
2.3.2 常量——Short類的常量 67
2.3.3 compareTo方法——比較短整數 67
2.3.4 decode方法——字符串解碼為short類型 68
2.3.5 doubleValue方法——返回double數值 68
2.3.6 equals方法——判斷短整數對象相等 68
2.3.7 floatValue方法——獲取float數值 69
2.3.8 hashCode方法——生成短整數的哈希碼 69
2.3.9 intValue()方法——獲取int值 70
2.3.10 longValue方法——獲取long值 70
2.3.11 parseShort方法——將字符串解析為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 構造方法——Boolean類的構造方法 75
2.4.2 常量——Boolean類的常量 75
2.4.3 booleanValue方法——獲取boolean值 76
2.4.4 compareTo方法——比較布爾值 76
2.4.5 equals方法——判斷相等 77
2.4.6 getBoolean方法——獲取布爾類型的系統屬性值 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 常量——Byte類的常量 80
2.5.3 compareTo方法——比較字節對象 80
2.5.4 decode方法——將字符串解碼為Byte值 81
2.5.5 doubleValue方法——獲取double值 82
2.5.6 equals方法——判斷字節相等 82
2.5.7 floatValue方法——獲取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.14 valueOf方法——創建Byte對象 86


2.6 Character類——字符類 88


2.6.1 構造方法——Character類的構造方法 88
2.6.2 常量——Character類的常量 88
2.6.3 charCount方法——計算指定字符代碼點的數量 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.13 isDefined方法——判斷是否為Unicode字符 98
2.6.14 isDigit方法——判斷是否為數字字符 98
2.6.15 isLetter方法——判斷是否為字母字符 99
2.6.16 isLowerCase方法——判斷是否為小寫字符 100
2.6.17 isUpperCase方法——判斷是否為大寫字符 100
2.6.18 toLowerCase方法——轉換為小寫字符 101
2.6.19 toUpperCase方法——轉換為大寫字符 101


2.7 Double——雙精度數字類 102


2.7.1 構造方法——Double類的構造方法 102
2.7.2 常量——Double類的常量 102
2.7.3 byteValue方法——獲取byte值 102
2.7.4 compare方法——比較雙精度數字對象 103
2.7.5 compareTo方法——比較兩個Double對象 103
2.7.6 intValue方法——將此Double值以int形式返回 104
2.7.7 doubleToLongBits方法——返回指定浮點值的表示形式 104
2.7.8 doubleToRawLongBits方法——保留NaN值返回指定浮點值的表示形式 105
2.7.9 doubleValue方法——獲取double值 105
2.7.10 equals方法——判斷Double對象是否相等 106
2.7.11 floatValue方法——獲取float值 107
2.7.12 hashCode方法——生成Double 對象的哈希碼 107
2.7.13 isInfinite方法——判斷Double值的大小是否是無窮大 107
2.7.14 isNaN方法——判斷Double值是否是一個非數字值 108
2.7.15 longBitsToDouble方法——返回給定位表示形式的double值 109
2.7.16 longValue方法——獲取long值 110
2.7.17 parseDouble方法——將字符串解析為double值 110
2.7.18 shortValue方法——獲取short值 110
2.7.19 toHexString方法——生成雙精度數字的十六進制字符串 111
2.7.20 toString方法——生成雙精度數字的十進制字符串 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方法——獲取byte值 114
2.8.4 compare方法——比較Float對象 114
2.8.5 compareTo方法——比較兩個Float對象所表示的數值 115
2.8.6 doubleValue方法——獲取double值 115
2.8.7 equals方法——判斷Double對象相等 115
2.8.8 floatToIntBits方法——返回浮點值的表示形式 116
2.8.9 floatToRawIntBits方法——保留非數字值返回指定浮點值的表示形式 117
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方法——判斷float值的大小是否是無窮大 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方法——生成浮點數的十進制字符串 123
2.8.21 valueOf方法——創建浮點數對象 124

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美中文字幕视频| 日韩av免费在线观看| 国产+成+人+亚洲欧洲| 国产精品爽爽ⅴa在线观看| 亚洲精品福利视频| 国产精品va在线| 国产精品欧美日韩| 7777精品久久久久久| 久久久999国产精品| 欧美日韩综合视频| 国产日韩欧美自拍| 日韩视频免费大全中文字幕| 久久精品中文字幕电影| 欧美亚洲一级片| 欧美精品videossex88| 国产精品视频区| 国产一区视频在线| 久久成人这里只有精品| 九九九热精品免费视频观看网站| 久久视频国产精品免费视频在线| 午夜精品一区二区三区在线播放| 日韩高清欧美高清| 亚洲精品国产福利| 成人免费看片视频| 国产精品美女主播在线观看纯欲| 欧美中在线观看| 欧美精品在线网站| 亚洲女人被黑人巨大进入| 奇米4444一区二区三区| 有码中文亚洲精品| 久久久97精品| 亚洲xxx自由成熟| 成人性教育视频在线观看| 日韩中文在线观看| 久久久久久久91| 一区二区三区www| 日韩av网站导航| 欧美一区第一页| 欧美在线精品免播放器视频| 国产99久久精品一区二区 夜夜躁日日躁| 久久精品电影网| 日本一区二区不卡| 91精品视频免费看| 国产中文字幕91| 欧美日韩一区二区免费视频| 亚洲精品综合久久中文字幕| 久久精品国产精品| 91超碰中文字幕久久精品| 69av在线播放| 亚洲网站在线观看| 精品自在线视频| 成人黄色av免费在线观看| 亚洲老板91色精品久久| 日韩精品免费在线视频观看| 久久久精品网站| 日韩电影在线观看永久视频免费网站| 亚洲人成电影网站色www| 成人欧美在线观看| 精品二区三区线观看| 色偷偷噜噜噜亚洲男人的天堂| 亚洲三级免费看| 一区二区三区四区视频| 亚洲天堂视频在线观看| 中文字幕日韩精品有码视频| 亚洲国产精品久久久| 久久精品亚洲国产| 国产欧美亚洲视频| 欧美另类第一页| 欧美在线观看网址综合| 午夜免费日韩视频| 欧美精品videosex牲欧美| 亚州精品天堂中文字幕| 日韩精品视频免费专区在线播放| 国产99久久精品一区二区| 日韩免费av片在线观看| 精品久久久久久国产91| 亚洲第一精品久久忘忧草社区| 色爱精品视频一区| 性色av一区二区三区在线观看| 欧美精品第一页在线播放| 日本久久久久亚洲中字幕| 久久久久久国产| 日韩中文有码在线视频| 国产精品香蕉国产| 成人亚洲欧美一区二区三区| 欧美精品久久久久久久久久| 日韩在线中文字幕| 91日韩在线视频| 欧美肥臀大乳一区二区免费视频| 国产精品一二三视频| 久久露脸国产精品| 欧美成人免费在线观看| 国产成人一区二区三区电影| www.99久久热国产日韩欧美.com| 国产精品自拍小视频| 欧洲美女免费图片一区| 久久夜色精品亚洲噜噜国产mv| 日韩在线观看视频免费| 久久久久久久久久久国产| 国产性猛交xxxx免费看久久| 欧美裸体xxxx极品少妇软件| 国产精品久久久久久久久久久久久久| 亚洲娇小xxxx欧美娇小| 亚洲一区亚洲二区亚洲三区| 国产成人精品视频在线| 亚洲wwwav| 亚洲国产精品一区二区三区| 日韩va亚洲va欧洲va国产| 欧美一级大片在线免费观看| 国产亚洲精品久久久久久777| 在线亚洲男人天堂| 亚洲欧美日韩综合| 中文字幕成人在线| 97热在线精品视频在线观看| 欧美猛交ⅹxxx乱大交视频| 亚洲福利在线观看| 国产一区二区三区免费视频| 在线播放精品一区二区三区| 精品无码久久久久久国产| 一区二区三区无码高清视频| 亚洲情综合五月天| 国产精品视频久久| 欧美激情成人在线视频| 久久久久久91| 欧美成人精品影院| 日韩中文字幕视频在线观看| 97色在线播放视频| 在线视频一区二区| 亚洲第一av网站| 中文字幕久热精品在线视频| 国产在线精品自拍| 精品日本美女福利在线观看| 久久久精品一区二区| 亚洲精品国产综合区久久久久久久| 欧美亚洲另类制服自拍| 中文字幕综合一区| 欧美成人h版在线观看| 国产精品精品视频一区二区三区| 最近中文字幕mv在线一区二区三区四区| 色综合久久天天综线观看| 久久久久国产一区二区三区| 日韩中文字幕视频在线观看| 国产精品av免费在线观看| 欧美亚洲在线播放| 国产精品69av| 日韩av有码在线| 国产美女主播一区| 日韩经典中文字幕在线观看| 亚洲国产精彩中文乱码av在线播放| 国产欧美日韩亚洲精品| 国产精品旅馆在线| 大量国产精品视频| 91免费看片在线| 久久伊人色综合| 7m精品福利视频导航| 亚洲欧美日韩精品| 日韩精品中文字| 亚洲第一免费播放区| 日本精品久久中文字幕佐佐木| 亚洲最大的网站| 日韩欧美一区二区三区| 欧美日韩国产精品一区二区三区四区| 日韩欧美a级成人黄色| 国产精品流白浆视频|