Java中基本數據類型和包裝器類型的關系


在程序設計中經常用到一系列的數據類型,在Java中也一樣包含八中數據類型,這八種數據類型又各自對應一種包裝器類型。如下表:

基本類型  包裝器類型
boolean Boolean
char Character
int Integer
byte Byte
short Short
long Long
float Float
double Double

 

 

 

 

 

 

 

為什么存在這兩種類型呢?

我們都知道在Java語言中,new一個對象存儲在堆里,我們通過堆棧中的引用來使用這些對象;但是對於經常用到的一系列類型如int,如果我們用new將其存儲在堆里就不是很有效——特別是簡單的小的變量。
所以就出現了基本類型,同C++一樣,Java采用了相似的做法,對於這些類型不是用new關鍵字來創建,而是直接將變量的值存儲在堆棧中,因此更加高效。

有了基本類型之后為什么還要有包裝器類型呢?我們知道Java是一個面相對象的編程語言,基本類型並不具有對象的性質,為了讓基本類型也具有對象的特征,就出現了包裝類型(如我們在使用集合類型Collection時就一定要使用包裝類型而非基本類型),它相當於將基本類型“包裝起來”,使得它具有了對象的性質,並且為其添加了屬性和方法,豐富了基本類型的操作。

另外當需要往ArrayList,HashMap中放東西時,像int,double這種基本類型是放不進去的,因為容器都是裝object的,這是就需要這些基本類型的包裝器類了。

二者可以相互轉換:

1 Character ch = new Character('x');
2 char c = ch;
3 char c = 'c';
4 Character ch = new Character(c);

二者之間也存在一些區別:

1.聲明方式不同,基本類型不適用new關鍵字,而包裝類型需要使用new關鍵字來在堆中分配存儲空間;
 
2.存儲方式及位置不同,基本類型是直接將變量值存儲在堆棧中,而包裝類型是將對象放在堆中,然后通過引用來使用;
 
3.初始值不同,基本類型的初始值如int為0,boolean為false,而包裝類型的初始值為null
 
4.使用方式不同,基本類型直接賦值直接使用就好,而包裝類型在集合如Collection、Map時會使用到。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM