1. 程式人生 > >Java中的基本類型和包裝類

Java中的基本類型和包裝類

屬性和方法 bject 關鍵字 map 基本類型 idt arr 通過 clas

Java中基本數據類型與包裝類型有

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

存在基本類型對應包裝類的原因:

  基本數據類型存方在棧中,效率更高

  new出來的對象存在於堆中(通過棧中的引用來使用這些對象),是一個對象,因此具有更多的諸如“轉換”的方法

包裝類型的意義

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

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

基本類型和包裝類轉換:

以int和Integer為例(Java5前):

1.int轉Integer

int i = 0;
Integer ii = new Integer(i);

2.Integer轉int

Integer ii = new Integer(0);
int i = ii.intValue(); 

基本類型和包裝類的區別:

1. 聲明方式不同:

基本類型不使用new關鍵字,而包裝類型需要使用new關鍵字來在堆中分配存儲空間;

2. 存儲方式及位置不同:

基本類型是直接將變量值存儲在棧中,而包裝類型是將對象放在堆中,然後通過引用來使用;

3. 初始值不同:

基本類型的初始值如int為0,boolean為false,而包裝類型的初始值為null;‘

4. 使用方式不同:

基本類型直接賦值直接使用就好,而包裝類型在集合如Collection、Map時會使用到。

自動裝箱和拆箱

在Java SE5之前,如果要生成一個數值為10的Integer對象,必須這樣進行:

Integer i = new Integer(10);

而在從Java SE5開始就提供了自動裝箱的特性,如果要生成一個數值為10的Integer對象,只需要這樣就可以了:

Integer i = 10;

這個過程中會自動根據數值創建對應的 Integer對象,這就是裝箱。

那什麽是拆箱呢?顧名思義,跟裝箱對應,就是自動將包裝器類型轉換為基本數據類型:

Integer i = 10;  //裝箱
int n = i;   //拆箱

裝箱就是 自動將基本數據類型轉換為包裝器類型;拆箱就是 自動將包裝器類型轉換為基本數據類型。

Java中的基本類型和包裝類