Java程式為了提高程式的效率,就對數據進行了不同的空間分配: 具體的劃分是如下的5個記憶體分配方式: 1.棧:存放的是局部變數 2.堆:存放的是所有new出來的東西 3.方法區: 4.本地方法區:(和系統相關) 5.寄存器:(CPU使用) 局部變數:在方法定義中或者方法聲明上的變數都稱為局部變數 堆 ...
Java程式為了提高程式的效率,就對數據進行了不同的空間分配:
具體的劃分是如下的5個記憶體分配方式:
1.棧:存放的是局部變數
2.堆:存放的是所有new出來的東西
3.方法區:
4.本地方法區:(和系統相關)
5.寄存器:(CPU使用)
局部變數:在方法定義中或者方法聲明上的變數都稱為局部變數
堆記憶體的特點:
1.每一個new出來的東西都有地址值
2.每一個變數都有預設值
byte,short,int,long 為 0
float,double 為 0.0
char“\u0000”等同於空
引用類型 為 null
3.使用完畢就會變成垃圾,但是並沒有立即回收,會在垃圾回收器空閑的時候回收。
棧記憶體的特點:
數據離開作用域就釋放
數組名的值是地址,數組元素(即數組名[索引])的值是數組中存儲數據的值。
int[] arr3 = arr; //這是將arr的地址給了arr3,現在arr和arr3首地址相同。
ArrayIndexOutOfBoundsException:數組索引越界異常
原因:訪問了不存在的索引
NullPointerException:空指針異常
原因:數組名的值是null,不再指向地址值。而你還使用數組名訪問了它的元素。
數組屬性:length,用於獲取數組的長度。
格式:數組名.length