国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

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

8個基本數據類型的包裝類

2019-11-08 01:55:51
字體:
來源:轉載
供稿:網友

我們知道,java提供的8種基本數據類型并不支持面向對象的編程機制,不具備“對象“的特性,沒有成員變量、方法可以被調用。java之所以提供這8種基本數據類型,主要是為了照顧程序員的傳統習慣。

這8種基本數據類型帶來了一定的方便性,例如簡單的數據運算和常規數據的處理。但是在某些時候,基本數據類型也會有一些制約,例如所有的引用類型的變量都繼承了Object類,都可以當成Object類型變量使用。但基本數據類型的變量不可以,如果有方法需要Object類型的參數,但實際需要的值是1、2、3等數值,這可能就比較難以處理。

為了解決8中基本數據類型變量不能當成Object類型變量使用的問題,java提供了包裝類的思想,為8種基本數據類型分別定義了相應的引用類型,并稱之為基本數據類型的包裝類。

基本數據類型和包裝類的對應表

byte

short

int

long

float

double

char

boolean

Byte

Short

Integer

Long

Float

Double

Character

Boolean

 

class BaoZhuang{    publicstatic void main(String[] args){        int i= 123;        Integerinteger = new Integer(i);        System.out.PRintln(integer);               byte b= 123;        Bytebb = new Byte(b);        System.out.println(bb);               shorts = 123;        Shortss = new Short(s);        System.out.println(ss);               long l= 123;        Longll = new Long(l);        System.out.println(ll);         floatf = 123.0f;        Floatff = new Float(f);        System.out.println(ff);         doubled = 123.0;        Doubledd = new Double(d);        System.out.println(dd);         char c= 'c';        Charactercharacter = new Character(c);        System.out.println(character);         booleanbl = true;        Booleanboo = new Boolean(bl);        System.out.println(boo);    }} 

 

除了int和char之外,其他的基本數據類型只需要首字母大寫即可編程它們對應的包裝類。

自動裝箱和自動拆箱:

我們都知道,不可以直接把基本數據類型賦值給引用數據類型。所以在JDK1.5之前,構建一個包裝類需要通過構造器來構造包裝類對象,但是這顯得代碼過于麻煩,所以從1.5之后就提供了自動裝箱和自動拆箱的功能。

自動裝箱:就是可以把一個基本類型變量直接賦值給對應的包裝類變量,或者賦值給Object變量(因為Object類是所有類的父類);

      

  int i= 123;        Integerinteger = i;//JDK1.5之前:new Integer(i);         //先把123456自動裝箱為Integer類型,Object代表Integer        Objectobj = 123456;        System.out.println(obj);//打印結果123456

 

自動拆箱:與自動裝箱相反,允許直接把包裝類對象直接賦值給一個對應的基本類型變量。

//TODO代碼演示自動裝箱與自動拆箱

 

        //自動裝箱        Integerinteger = 1234;        //自動拆箱        intint2 = integer;        System.out.println(int2);               int i= 123;        Objectobj = i;        int ii= (Integer)obj;        System.out.println(ii); 

 

思考:

              

     Byteb = 123;                   //b自動轉換成了byte,byte強轉int                   Integerinteger = (int)b;                   System.out.println(integer);

當JDK提供了自動裝箱和自動拆箱功能后,大大簡化了基本類型變量和包裝類對象之間的轉換,值得提出的是,進行自動裝箱和自動拆箱時,必須注意類型匹配,例如Integer只能自動拆箱成int類型變量,不要試圖拆箱成boolean類型變量;與之類似的是,int類型只能自動裝箱成Integer對象,即便賦給Object類型變量,那也是利用了自動轉型的特性,不要試圖將int自動裝箱成Boolean類型對象。

借助這種機制,一定程度上,我們可以把包裝類當成基本數據類型使用,也可以把基本類型的變量近似的當成對象使用(當然,使用的時候需要自動裝箱一下)。

除此之外,包裝類還可以實現基本類型變量和字符串之間的轉換,把字符串類型的值轉換為基本類型的值有兩種方式。

1、parseXxx(String )靜態方法。(Character除外)

2、利用包裝類提供的Xxx(Stirng s)構造器。

class BaoZhuang{    publicstatic void main(String[] args){        //字符串和基本數據類型可以轉換了        //1 靜態方法調用        intresult = Integer.parseInt("123");        System.out.println(result);        //2 構造方法創建        result= new Integer("1234");        System.out.println(result);    }} 

String類型也提供了多個重載的valueOf()方法,用于將基本類型變量轉換成字符串,下面程序示范 了這種轉換關系。

//TODO 字符串與包裝類的互轉        Stringstr2 = String.valueOf(i);        System.out.println(str2);        //但是實際中,我們有更加簡便的方法將數據類型轉為String        int i= 123;        Stringstr = i + ""; 

當包裝類型的變量是引用數據類型,但是我們也可以拿這些包裝類型對象與數值類型的值比較,這種比較是直接取出包裝類的實例所包裝的數值再與之進行比較。

//TODO        Integerinteger = 123;        System.out.println(integer> 456);        Integerinteger1 = 1234;        Integerinteger2 = 456;        System.out.println(integer1> integer2);

但是,如果是兩個包裝類型直接比較,即便包裝的值相同,但是也會返回false,因為引用數據類型比較是有其他方式比較的,以后會說引用數據類型的比較。

//TODO         Integerinteger1 = 456;        Integerinteger2 = 456;        System.out.println(integer1== integer2);//false

//練習包裝類方法、靜態方法、構造器、常量

     

   //字符串數字解碼接受不同進制格式的字符串數字        intresult = Integer.decode("0x123456");        System.out.println(result);        //字符串解碼,僅支持字面量數字        result= new Integer("12345");        System.out.println(result);


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 栖霞市| 齐齐哈尔市| 黑龙江省| 泰兴市| 井研县| 长丰县| 天水市| 阿尔山市| 屯留县| 阜城县| 丹江口市| 汕尾市| 永吉县| 修水县| 炉霍县| 修文县| 嵊州市| 平泉县| 吉水县| 和平县| 锡林郭勒盟| 宁都县| 元阳县| 额尔古纳市| 丰台区| 沂南县| 沂源县| 沙湾县| 信宜市| 囊谦县| 昌黎县| 洛川县| 伊吾县| 即墨市| 潜山县| 海盐县| 宜丰县| 满城县| 临沭县| 磐安县| 遵义市|