包裝類介紹
? ? ? ?所謂包裝類,就是能夠直接將簡單類型的變量表示為一個類耙册。
? ? ? ?數(shù)值型包裝類都繼承至Number驹闰,而字符型和布爾型繼承至Object。
包裝類與基本類型:
為什么需要包裝類续挟?
1.首先,Java語言是一個面向?qū)ο蟮恼Z言侥衬,但是Java中的基本數(shù)據(jù)類型卻是不面向?qū)ο蟮氖觯瑸榛緮?shù)據(jù)類型設(shè)計一個對應(yīng)的類進行代表,這種方式增強了Java面向?qū)ο蟮男再|(zhì)轴总。
2.基本數(shù)據(jù)類型直颅,在實際使用時將存在很多的不便,很多地方都需要使用對象而不是基本數(shù)據(jù)類型怀樟。例如功偿,在集合類中,我們是無法將int 往堡、double等類型放進去的械荷,因為集合的容器要求元素是Object類型。而包裝類型的存在使得向集合中傳入數(shù)值成為可能虑灰,包裝類的存在彌補了基本數(shù)據(jù)類型的不足吨瞎。
?3.包裝類還為基本類型添加了屬性和方法,豐富了基本類型的操作穆咐。如當我們想知道int取值范圍的最小值颤诀,我們需要通過運算,如下面所示对湃,但是有了包裝類崖叫,我們可以直接使用Integer.MAX_VALUE即可。
為什么要保留基本數(shù)據(jù)類型熟尉?
Java中用new關(guān)鍵字創(chuàng)建的對象是存儲在堆里的归露,通過棧中的引用來使用這些對象,所以對象本身來說是比較消耗資源的斤儿。
對于經(jīng)常用到的類型剧包,如int等,如果每次使用這種變量的時候都需要new一個對象的話往果,就會比較笨重疆液。所以Java提供了基本數(shù)據(jù)類型直接在棧內(nèi)存中存儲,更加高效陕贮。
包裝類型與基本類型的異同
1. 在Java中堕油,一切皆對象,但八大基本類型卻不是對象
2. 聲明方式的不同肮之,基本類型無需通過new關(guān)鍵字來創(chuàng)建掉缺,而包裝類型需new關(guān)鍵字
3. 存儲方式及位置的不同,基本類型是直接存儲變量的值保存在棧中能高效的存取戈擒,包裝類型需要通過引用指向?qū)嵗裘鳎唧w的實例保存在堆中
4. 初始值的不同,包裝類型的初始值為null筐高,基本類型的的初始值視具體的類型而定搜囱,比如int類型的初始值為0
5. 使用方式的不同,比如與集合類合作使用時只能使用包裝類型
包裝類的特點
所有包裝類都是使用final修飾的柑土,不能被繼承蜀肘,包裝類是不可變類,包裝類的對象被創(chuàng)建后稽屏,它所包含的基本類型數(shù)據(jù)就不能改變扮宠。其中數(shù)值型對應(yīng)的包裝類都是繼承自Number類,而字符型和布爾型繼承至Object類狐榔。
包裝類的使用
1.與基本數(shù)據(jù)類型的轉(zhuǎn)換 拆箱 裝箱
2.與字符串的轉(zhuǎn)換? ?
基本類型轉(zhuǎn)換為String類型 使用String的valueof()方法或者使用?+""?這里就涉及到數(shù)據(jù)類型的自動提升坛增。
String類型轉(zhuǎn)換為基本類型使用包裝類;
3.基本類型包裝類對象間的比較("==")