java中引用傳遞
阿新 • • 發佈:2018-12-19
基本概念
棧記憶體
所謂的棧記憶體就是儲存程序在執行過程中變數的記憶體空間
堆記憶體
所謂的堆記憶體就是儲存系統中資料的記憶體空間
陣列相關的引用傳遞
先來看一段程式碼
public class ArrayDemo { public static void main(String[] args) { int[] x = null; x = new int[3]; System.out.println(x.length); x[0] = 10 ; // 陣列第一個元素 x[1] = 20 ; // 陣列第二個元素 x[2] = 30 ; // 陣列第三個元素 for (int i = 0; i<x.length ; i++) { System.out.println(x[i]) ; // 通過迴圈控制索引下標更改 } } }
通過上述程式碼我們來看一下上述變數在記憶體空間中式如何分配的 同時,多個佔記憶體也可以指向同一塊對記憶體,如下程式碼
public class ArrayDemo{ public static void main(String[] args) { int[] x = null ; int[] temp = null ; // 宣告物件 x = new int[3] ; System.out.println(x.length) ; x[0] = 1 ; // 陣列第一個元素 x[1] = 2 ; // 陣列第二個元素 x[2] = 3 ; // 陣列第三個元素 for (int i = 0; i<x.length ; i++) { System.out.println(x[i]) ; // 通過迴圈控制索引下標更改 } temp = x ; //如果要發生引用傳遞,不要出現[] temp[0] = 55 ; // 修改資料 System.out.println(x[0]) ; } }
相信看了這幅圖之後,就會理解java中不同的棧變數指向相同的堆變數在記憶體中是如何分配的了