java數據類型:基本數據類型、引用數據類型(三種其中一種:數組類型)

  java內存結構java在啟動時,一共在空間劃分了5片空間來進行自己數據的存儲(棧內存,堆內存, 方法區,本地方法區,寄存器)

  棧內存:特點是數據使用完畢,會自動釋放(凡是局部變量(定義在方法中的變量、定義在方法參數上 的變量、定義在for循環里面的變量)都在棧內存中)

  堆內存:特點

  1.是堆里面每一個實體都有一個存放位置,都有一個內存地址值,凡是new出來的實體都在堆里面,堆里面存放的就是實體,實體包括數組和對象;

  2.堆內存中實體是用于封裝數據的,而堆內存實體中的數據都有默認初始化值(數組中數值類為int型默認0,double型默認為0.0等)

  3.實體不在被使用,會在不確定的時間內被垃圾回收器回收(x = null,則代表x不再指向這個 數組,而是值為空,則x不知道了數組的地址,也就跟這數組沒有關系,而這數組就沒人使用了。則當一個實體在堆內存中沒有任何引用所使用的時候,java虛擬機就視他為垃圾。)

  java垃圾回收機制:java語言本身成長于c++,優化了一些C++語言的特性; C++語言的特點在于,我們 寫 的很多程序運行的時候會在內存中開辟空間,當內存中的實體越來越多的時候,比較占用內存空間,有些實體不用了需要清除,C++的做法是由程序員手動調用一個功能,將內存中的這部分數據清除掉;而java只要實體或對象在堆中變成垃圾,java虛擬機會自動啟用垃圾回收機制,在不確定的時間內將垃圾清除掉。

  舉例:int[] x = new int[3];在內存中是這樣的,首先是在棧內存中定義了一個x,在堆內存中分配了三個格子,每個都有編號,每個格子存放數組對應值(實體)。堆中每個實體,都有個存放位置(地址),該數組的起始地址(假設0x0079),標識數組在堆內存存放的首地址,將該地址值賦給x,則稱x指向了這個數組或者叫做x引用了這個數組(引用數據類型的由來)。