1. 程式人生 > >java中引用傳遞

java中引用傳遞

基本概念

棧記憶體

所謂的棧記憶體就是儲存程序在執行過程中變數的記憶體空間

堆記憶體

所謂的堆記憶體就是儲存系統中資料的記憶體空間

陣列相關的引用傳遞

先來看一段程式碼

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中不同的棧變數指向相同的堆變數在記憶體中是如何分配的了