引用數(shù)據(jù)和基本數(shù)據(jù)的區(qū)別
基本數(shù)據(jù)類型
Int,long,long,float,double,short,boolean,char,byte
引用數(shù)據(jù)類型:
類,接口,數(shù)組,枚舉,注解類型
區(qū)別
從概念方法來說:
基本數(shù)據(jù)類型:變量名指向具體的數(shù)值 ,引用數(shù)據(jù)類型:變量名指向存數(shù)據(jù)對象的內(nèi)存地址,即變量名指向hash值從內(nèi)存方法
基本數(shù)據(jù)類型在被創(chuàng)建時恩脂,在棧上給其劃分一塊內(nèi)存歹篓,將數(shù)值直接存儲在棧上单山。引用數(shù)據(jù)類型在被創(chuàng)建時,首先要在棧上給其引用(句柄)分配一塊內(nèi)存具滴,而對象的具體信息都存儲在堆內(nèi)存上,然后由棧上面的引用指向堆中對象的地址师倔。
數(shù)據(jù)類型在 棧和堆中的區(qū)別靜態(tài)區(qū): 保存自動全局變量和 static 變量(包括 static 全局和局部變量)构韵。靜態(tài)區(qū)的內(nèi)容在總個程序的生命周期內(nèi)都存在,由編譯器在編譯的時候分配趋艘。
堆區(qū): 一般由程序員分配釋放疲恢,由 malloc 系列函數(shù)或 new 操作符分配的內(nèi)存,其生命周期由 free 或 delete 決定瓷胧。在沒有釋放之前一直存在显拳,直到程序結(jié)束,由OS釋放搓萧。其特點(diǎn)是使用靈活萎攒,空間比較大,但容易出錯
棧區(qū): 由編譯器自動分配釋放矛绘,保存局部變量耍休,棧上的內(nèi)容只在函數(shù)的范圍內(nèi)存在,當(dāng)函數(shù)運(yùn)行結(jié)束货矮,這些內(nèi)容也會自動被銷毀羊精,其特點(diǎn)是效率高,但空間大小有限
思維導(dǎo)圖如下:
![](http://oypem0qjb.bkt.clouddn.com/Stone/%E5%BC%95%E7%94%A8%E6%95%B0%E6%8D%AE%E5%92%8C%E5%9F%BA%E6%9C%AC%E6%95%B0%E6%8D%AE%E7%9A%84%E5%8C%BA%E5%88%AB.jpg)