一、基本數(shù)據(jù)類(lèi)型:
byte:Java中最小的數(shù)據(jù)類(lèi)型逼肯,在內(nèi)存中占8位(bit),即1個(gè)字節(jié)桃煎,取值范圍-128~127篮幢,默認(rèn)值0
short:短整型,在內(nèi)存中占16位为迈,即2個(gè)字節(jié)三椿,取值范圍-32768~32767,默認(rèn)值0
int:整型葫辐,用于存儲(chǔ)整數(shù)搜锰,在內(nèi)在中占32位,即4個(gè)字節(jié)耿战,取值范圍-2147483648~2147483647蛋叼,默認(rèn)值0
long:長(zhǎng)整型,在內(nèi)存中占64位剂陡,即8個(gè)字節(jié)-2^63~2^63-1狈涮,默認(rèn)值0L
float:浮點(diǎn)型,在內(nèi)存中占32位鸭栖,即4個(gè)字節(jié)歌馍,用于存儲(chǔ)帶小數(shù)點(diǎn)的數(shù)字(與double的區(qū)別在于float類(lèi)型有效小數(shù)點(diǎn)只有6~7位),默認(rèn)值0
double:雙精度浮點(diǎn)型晕鹊,用于存儲(chǔ)帶有小數(shù)點(diǎn)的數(shù)字松却,在內(nèi)存中占64位暴浦,即8個(gè)字節(jié),默認(rèn)值0
char:字符型玻褪,用于存儲(chǔ)單個(gè)字符肉渴,占16位公荧,即2個(gè)字節(jié)带射,取值范圍0~65535,默認(rèn)值為空
boolean:布爾類(lèi)型循狰,占1個(gè)字節(jié)窟社,用于判斷真或假(僅有兩個(gè)值,即true绪钥、false)灿里,默認(rèn)值false
二、引用數(shù)據(jù)類(lèi)型:
類(lèi)程腹、接口類(lèi)型匣吊、數(shù)組類(lèi)型、枚舉類(lèi)型寸潦、注解類(lèi)型色鸳。
區(qū)別:
基本數(shù)據(jù)類(lèi)型在被創(chuàng)建時(shí),在棧上給其劃分一塊內(nèi)存见转,將數(shù)值直接存儲(chǔ)在棧上命雀。
引用數(shù)據(jù)類(lèi)型在被創(chuàng)建時(shí),首先要在棧上給其引用(句柄)分配一塊內(nèi)存斩箫,而對(duì)象的具體信息都存儲(chǔ)在堆內(nèi)存上吏砂,然后由棧上面的引用指向堆中對(duì)象的地址。
例如乘客,有一個(gè)類(lèi)Person,有屬性name,age,帶有參的構(gòu)造方法狐血,
Person p = new Person("zhangsan",20);
在內(nèi)存中的具體創(chuàng)建過(guò)程是:
1.首先在棧內(nèi)存中位其p分配一塊空間;
2.在堆內(nèi)存中為Person對(duì)象分配一塊空間,并為其三個(gè)屬性設(shè)初值""易核,0匈织;
3.根據(jù)類(lèi)Person中對(duì)屬性的定義,為該對(duì)象的兩個(gè)屬性進(jìn)行賦值操作耸成;
4.調(diào)用構(gòu)造方法报亩,為兩個(gè)屬性賦值為"Tom",20;(注意這個(gè)時(shí)候p與Person對(duì)象之間還沒(méi)有建立聯(lián)系)井氢;
5.將Person對(duì)象在堆內(nèi)存中的地址弦追,賦值給棧中的p;通過(guò)引用(句柄)p可以找到堆中對(duì)象的具體信息。
相關(guān)知識(shí):
靜態(tài)區(qū):保存自動(dòng)全局變量和static?變量(包括static?全局和局部變量)花竞。靜態(tài)區(qū)的內(nèi)容在總個(gè)程序的生命周期內(nèi)都存在劲件,由編譯器在編譯的時(shí)候分配掸哑。
堆區(qū):一般由程序員分配釋放,由malloc?系列函數(shù)或new?操作符分配的內(nèi)存零远,其生命周期由free?或delete?決定苗分。在沒(méi)有釋放之前一直存在,直到程序結(jié)束牵辣,由OS釋放摔癣。其特點(diǎn)是使用靈活,空間比較大纬向,但容易出錯(cuò)
棧區(qū):由編譯器自動(dòng)分配釋放,保存局部變量逾条,棧上的內(nèi)容只在函數(shù)的范圍內(nèi)存在琢岩,當(dāng)函數(shù)運(yùn)行結(jié)束,這些內(nèi)容也會(huì)自動(dòng)被銷(xiāo)毀师脂,其特點(diǎn)是效率高担孔,但空間大小有限
文字常量區(qū):常量字符串就是放在這里的。?? 程序結(jié)束后由系統(tǒng)釋放吃警。