2011-11-24 59 views
4

我正在閱讀一本名爲「兩學期Java」的書,我真的不理解包裝類和自動裝箱。我不明白包裝類和自動裝箱?

你可以用一些代碼給我解釋一下嗎?

而且這是真正困擾我:

Object [] anArray = new Object[20]; 
anArray[0] = new Integer (37); 

是什麼Object參考這裏,是對象的類,並且代碼爲它創造一個數組?

我已經得到了這本書,我有一個小小的理解,我只是需要有人向我簡要地解釋一下。如果我在網上閱讀某些內容,我只會感到困惑。

+5

你有沒有試過在網上找「autoboxing」?我有一種預感,即你不是第一個想知道這件事的人。 –

回答

6

包裝類

包裝類用於封裝,使得操作可以對他們進行定義的原始類型。例如,ToString()方法在包裝類中定義,但不能在原始類型上調用。

自動裝箱

自動裝箱允許基本類型和包裝器類型

自動裝箱

int i; 
Integer j; 
i = 1; 
j = 2; 
i = j; 
j = i; 

之間自動轉換沒有自動裝箱

int i; 
Integer j; 
i = 1; 
j = new Integer(2); 
i = j.intValue(); 
j = new Integer(i) 

關於問題的第二部分,

Object [] anArray = new Object[20]; 

定義的陣列能夠對象(在它的20個對象的特定情況下),所以它允許持有任何物體在陣列的每個位置上,

anArray[0] = new Integer (37); 

Integer是Object的子類。所以它允許保持Integer在數組中

0

對象是一個類,anArray被定義爲一個由20個對象組成的數組。這允許您在數組的每個索引中粘貼不同類型的東西,而不是強制每個索引都是完全相同的類型。在這個例子中,索引0被設置爲一個整數,但索引1可以被設置爲一個布爾值。

0

包裝類提供了轉換成原始對象和對象爲基本的機制。

由於J2SE 5.0,自動裝箱和拆箱功能自動將原語轉換爲對象和對象爲原語。已知原始對象的自動轉換和自動裝箱,反之亦然拆箱。

自動裝箱是Java編譯器在基元類型和它們相應的對象包裝類之間進行的自動轉換。例如,將int轉換爲Integer,double轉換爲Double等等。如果轉換以另一種方式進行,則稱爲拆箱。

下面是自動裝箱的最簡單的例子:

字符ch = 'A';