Java中基本數據類型與引用數據類型分析

java中的數據類型分爲兩大類:基本數據類型和引用數據類型

基本數據類型,包括數值型,字符型和布爾型。

數值型:1)整型:byte 1個字節;short 2個字節;int 4個字節;long 8個字節。

2)浮點型:float 4個字節;double 
8個字節;可以採用十進制和十六進制兩種表示方式,其中十六進制表示方法只能採用科學計數法,例如:0x1.2p3,表示的是的是1乘以16加上2乘以16的-1次方的和乘以2的三次方;浮點型的默認類型爲DOUBLE型,如果聲明float型浮點數,要在數值後面加上f或F,例如:float 
f1 = 3.14F;否則會報精度錯誤。

字符型:char 採用unicod的16位編碼方式進行編碼。

布爾型:true,false;

引用數據類型:類、接口類型、數組類型、枚舉類型、註解類型;

基本數據類型和引用數據類型的區別主要在存儲方式上:

基本數據類型在被創建時,在棧上給其劃分一塊內存,將數值直接存儲在棧上;

引用數據類型在被牀架時,首先要在棧上給其引用(句柄)分配一塊內存,而對象的具體信息都存儲在堆內存上,然後由棧上面的引用指向堆中對象的地址。

例如:我有一個類MyDate,其中有屬性day,mouth,year等,有構造方法(帶參數);

現在爲其創建一個對象MyDate d1 = new 
MyDate(8,8,2008);

在內存中的具體創建過程是:

1)首先在棧內存中位其d1分配一塊空間;

2)然後在堆內存中爲MyDate對象分配一塊空間,併爲其三個屬性設初值0,0,0;

3)根據類MyDate中對屬性的定義,爲該對象的三個屬性進行賦值操作;

4)調用構造方法,爲三個屬性賦值爲8,8,2008;(注意這個時候d1與MyDate對象之間還沒有建立聯繫)

5)將MyDate對象在堆內存中的地址,賦值給棧中的d1;通過句柄d1可以找到堆中對象的具體信息。

呵呵,引用數據類型的創建還真是挺複雜的一個過程。。。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章