基本数据类型与引用数据类型的不同
基本數(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中對屬性的定義,為該對象的兩個屬性進(jìn)行賦值操作;
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)容也會自動被銷毀,其特點是效率高,但空間大小有限
總結(jié)
以上是生活随笔為你收集整理的基本数据类型与引用数据类型的不同的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 农信系统已关市是什么意思
- 下一篇: 支付宝亲密付在哪里