Java基本類型

java中數據的基本類型分爲:基本數據類型和引用數據類型,對此不多介紹;

接下來討論一下java中數據類型存儲在哪基本數據類型存儲在哪,取決於基本類型在哪聲明:

1.基本數據類型在方法中聲明時,其變量名和值都是存儲在java棧中的;在方法中聲明基本類型數據:

例: int a = 10

①在棧中聲明一個變量名爲a的引用;

②在棧中查找是否有字面值爲10的地址,如果沒有就開闢一個存放字面值是10的地址;

③將變量名爲a的引用指向字面值爲10的地址;

2.基本數據類型在類中聲明時則是存儲在堆內存中的;

①在類中聲明的基本數據類型,在類加載時會存儲到方法區中;

②在java堆中從生成代表這個類的java.lang.Class對象,作爲方法區這些數據的訪問入口;

③ static關鍵字修飾的數據是屬於類本身的,存儲在方法區中;

④ final關鍵詞修飾的數據表示引用不變的,存儲在常量池中;

3.基本數據類型的包裝類:

① Integer i = 10;同 i = 10的聲明過程。

② Integer i = new Integer(10);數據10是存儲在堆中的;

引用數據類型一定輸存儲在堆中的嗎?

1.特殊的String類

例 : String str = “abc”;

①在棧中聲明一個變量名爲str的引用;

②在常量池中查找是否有“abc”的字符串對象,如果沒有就在常量池中創建存儲一個值爲“abc”的字符串對象;

③將str的引用指向字符串對象“abc”;

④當再次聲明 String str1 = "abc",常量池中已經有“abc”對象,所以str1直接指向abc的地址;

⑤ str = str1,引用數據類型比較,比較的是應用的地址;

注: String str = “abc”沒有創建或創建一個對象

2.其他引用類型

Stirng str = new String("abc");

①在棧中聲明一個變量名爲str的引用;

②在堆中創建存儲一個字符串對象“abc”;

③檢查常量池中是否有字符串對象“abc”,如果沒有就在常量池中創建存儲一個值爲“abc”的字符串對象;

④將堆中字符串對象“abc”與常量池中字符串對象“abc”聯繫起來,可以用intern方法返回常量池中的對象的引用;

⑤ 將str的引用指向堆中字符串對象“abc”;

注: String str = new String ("abc")創建一個或兩個對象。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章