天天看點

Java包裝類

包裝類是比較容易被人忽視的一個東西

1、JAVA為什麼會有這個東西

Java語言是一個面向對象的語言,但是Java中的基本資料類型卻是不面向對象的,這在實際使用時存在很多的不便,為了解決這個不足,在設計類時為每個基本資料類型設計了一個對應的類進行代表,這樣八個和基本資料類型對應的類統稱為包裝類(Wrapper Class),有些地方也翻譯為外覆類或資料類型類。

2、它是啥

包裝類均位于java.lang包,包裝類和基本資料類型的對應關系如下表所示:

基本類型 包裝類

boolean  Boolean

char       Character

byte       Byte

short      Short

int          Integer

long       Long

float       Float

double   Double

在這八個類名中,除了Integer和Character類以後,其它六個類的類名和基本資料類型一直,隻是類名的第一個字母大寫即可。

3、差別:

基本類型一般都是把值放在棧空間的,而包裝類是棧空間放位址,值放在這個位址指向的堆空間:

int i = 5;//直接在棧中配置設定空間

Integer i = new Integr(5);//對象是在堆記憶體中,而i(引用變量)是在棧記憶體中

比如: Integer 的預設值是 null,int的預設值0 

4、它有哪些主要功能

這些類的用途主要包含兩種:

  1. 作為和基本資料類型對應的類類型存在,友善涉及到對象的操作。
  2. 包含每種基本資料類型的相關屬性如最大值、最小值等,以及相關的操作方法。
  3. (其他後文提到的一些特性其實也屬于這兩種)

5、一般人會在什麼時候注意、用到它

  1. 當需要往ArrayList,HashMap中放東西時,像int,double這種基本類型是放不進去的,因為容器都是裝object的,這是就需要這些基本類型的外覆類了。Java中每種基本類型都有相應的外覆類。
  2. 面試題裡考你自動拆裝箱的時候

6、它的一大特點、難點:自動拆裝箱

用不着先不管,暫時跳過,(好像也不難)。。

可以參考:

http://www.cnblogs.com/liuling/archive/2013/05/05/intAndInteger.html

https://www.zhihu.com/question/27194744?sort=created

7、一個詭異

  1. 沒有方法可以直接改變一個Integer對象的值,隻能重新初始化一個新的
    1. 這個其實是我這次研究這個東西的主要目的,後來發現真的不可以
    2. 網上直接提這個的很少,有一些評論裡提到了,然後我确實在JAVA7的API裡找不到接口

繼續閱讀