一稠集、基本數(shù)據(jù)類型:
byte:Java中最小的數(shù)據(jù)類型,在內(nèi)存中占8位(bit)饥瓷,即1個字節(jié)剥纷,取值范圍-128~127,默認值0
short:短整型呢铆,在內(nèi)存中占16位晦鞋,即2個字節(jié),取值范圍-32768~32717,默認值0
int:整型悠垛,用于存儲整數(shù)线定,在內(nèi)在中占32位,即4個字節(jié)确买,取值范圍-2147483648~2147483647斤讥,默認值0
long:長整型,在內(nèi)存中占64位湾趾,即8個字節(jié)-263~263-1芭商,默認值0L
float:浮點型,在內(nèi)存中占32位搀缠,即4個字節(jié)铛楣,用于存儲帶小數(shù)點的數(shù)字(與double的區(qū)別在于float類型有效小數(shù)點只有6~7位),默認值0
double:雙精度浮點型艺普,用于存儲帶有小數(shù)點的數(shù)字簸州,在內(nèi)存中占64位,即8個字節(jié)歧譬,默認值0
char:字符型勿侯,用于存儲單個字符,占16位缴罗,即2個字節(jié),取值范圍0~65535祭埂,默認值為空
boolean:布爾類型面氓,占1個字節(jié),用于判斷真或假(僅有兩個值蛆橡,即true舌界、false),默認值false
二泰演、引用數(shù)據(jù)類型:
類呻拌、接口類型、數(shù)組類型睦焕、枚舉類型藐握、注解類型。
區(qū)別:
基本數(shù)據(jù)類型在被創(chuàng)建時垃喊,在棧上給其劃分一塊內(nèi)存猾普,將數(shù)值直接存儲在棧上。
引用數(shù)據(jù)類型在被創(chuàng)建時本谜,首先要在棧上給其引用(句柄)分配一塊內(nèi)存初家,而對象的具體信息都存儲在堆內(nèi)存上,然后由棧上面的引用指向堆中對象的地址。
例如溜在,有一個類Person,有屬性name,age,帶有參的構(gòu)造方法陌知,
Person p = new Person("zhangsan",20);
在內(nèi)存中的具體創(chuàng)建過程是:
1.首先在棧內(nèi)存中位其p分配一塊空間;
2.在堆內(nèi)存中為Person對象分配一塊空間,并為其三個屬性設(shè)初值""掖肋,0仆葡;
3.根據(jù)類Person中對屬性的定義,為該對象的兩個屬性進行賦值操作培遵;
4.調(diào)用構(gòu)造方法浙芙,為兩個屬性賦值為"Tom",20;(注意這個時候p與Person對象之間還沒有建立聯(lián)系)籽腕;
5.將Person對象在堆內(nèi)存中的地址嗡呼,賦值給棧中的p;通過引用(句柄)p可以找到堆中對象的具體信息。
相關(guān)知識:
靜態(tài)區(qū): 保存自動全局變量和 static 變量(包括 static 全局和局部變量)皇耗。靜態(tài)區(qū)的內(nèi)容在總個程序的生命周期內(nèi)都存在南窗,由編譯器在編譯的時候分配。
堆區(qū): 一般由程序員分配釋放郎楼,由 malloc 系列函數(shù)或 new 操作符分配的內(nèi)存万伤,其生命周期由 free 或 delete 決定。在沒有釋放之前一直存在呜袁,直到程序結(jié)束敌买,由OS釋放。其特點是使用靈活阶界,空間比較大虹钮,但容易出錯
棧區(qū): 由編譯器自動分配釋放,保存局部變量膘融,棧上的內(nèi)容只在函數(shù)的范圍內(nèi)存在芙粱,當(dāng)函數(shù)運行結(jié)束,這些內(nèi)容也會自動被銷毀氧映,其特點是效率高春畔,但空間大小有限
文字常量區(qū): 常量字符串就是放在這里的。 程序結(jié)束后由系統(tǒng)釋放岛都。