前言
不關我們是創建基本數據類型的變量還是引用數據類型的變量,jvm都會通過內存分布去編譯和運行程序。
內存一般分為棧區、堆區、方法區(方法區里面包含常量池)
棧區一般存放變量(局部變量)、方法的參數引以及用對象
堆區一般存放的是對象以及成員變量
方法區一般存放方法 里面常量池存放常量
不管你是要創建變量還是對象在內存里面都會開辟內存空間
注:在內存中他們之間的關聯是通過內存地址進行關聯的 而在程序中為了方便我們不用內存地址 改用變量來表達
下面來看一個簡單的聲明一個變量的內存分布圖:
上圖解釋:
1.首先在棧區開辟一個空的內存空間
2.常量放在常量池中並創建內存地址
3.將常量的內存地址賦值給a變量的內存空間
4.最后a變量指向常量10 整個聲明變量並賦值的流程結束
(注意:局部變量和普通變量是沒有默認值的 而成員變量也叫成員屬性在內存地址中是有默認值的 int類型的成員屬性默認值是0 )
在來看一下創建對象時的內存分布圖