這篇寫得很好,以下內容也都取自於這篇大佬的博客
https://blog.csdn.net/qq_14989227/article/details/79589342
1.首先,說一下什麼叫變量:
變量就是計算機內存中的一小塊內存單元,儲存在這一小塊內存單元中的值叫做變量的值。
例如 int a = 1;
a 就是變量名, 1 就是變量值。
而當一個變量指向一個對象時,這個變量就叫做引用變量
比如 A a = new A();
a就是一個引用變量, 它指向了一個A對象,也可以說它引用了一個A對象,我們通過操作這個a來操作A對象
引用類型數據在被創建時,首先要在棧上給其引用(句柄)分配一塊內存,而對象的具體信息都保存在堆內存上,然後由棧中的引用指向堆內存中的對象的地址。而基本數據類型被創建時,在棧上給其分配一塊內存空間,信息直接存儲在棧上。
以JAVA中的數組爲例,以下是清華JAVA網課中的視頻截圖:
不論是一維數組還是二維數組,原理實際上都是一樣的 int [][] arr = new int[3][4], int [][] arr 會在棧中開闢一塊區域,也就是引用所存儲的區域,而三個數組元素則是存儲在堆中的。堆內存中的三個一維數組首地址先被一個容量是3的數組引用,再被arr指向,這樣arr就可以訪問到 [3][4]中的任何一個元素。
JAVA中的引用數據類型包括:類,接口類型,數組類型,枚舉類型,註解類型,字符串類型。