首頁  >  文章  >  Java  >  Java中值傳遞與引用傳遞之間的區別分析(附程式碼)

Java中值傳遞與引用傳遞之間的區別分析(附程式碼)

不言
不言原創
2018-08-21 14:15:061926瀏覽

這篇文章帶給大家的內容是關於Java中值傳遞與引用傳遞(地址傳遞)之間的區別分析(附程式碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

值傳遞pass by value)是指在呼叫函數時實際參數複製 一份傳遞到函數中,這樣在函數中如果對參數進行修改,將不會影響到實際參數。傳遞物件往往為整數浮點型字元型等基本資料結構。

public class PassByValueReference {
	//值传递
	public static void main(String[] args) {
		int x = 9;
		pass(x);
		System.out.println(x);
	}
	
	private static void pass(int y) {
		System.out.println(y);
		y=0;
	}
}

 下為運行結果:(整數y的值變化沒有影響整數x的值)

引用傳遞(pass by reference)是指在呼叫函數時將實際參數的##位址 直接傳遞到函數中,那麼在函數中對參數所進行的修改,將會影響到實際參數。 (類似共同體) 傳遞物件往往為數組等位址資料結構。

public class PassByValueReference {
        //引用传递
	public static void main(String[] args) {
		int [] x = {9};
                System.out.println(x[0]);
		pass(x);
		System.out.println(x[0]);
	}
	
	public static void pass(int [] y) {
		y[0] = 0;
	}
}

下為運行結果:(數組y的值變化同時影響數組x的值) 

         (值傳遞與引用傳遞在電腦資料結構中用到了棧與堆的知識)

另外,如果還沒接觸Java中的函數與方法相關知識的,可簡單借助賦值理解:(運行結果與上面類似)

public class PassByValueReference {
	//值传递(赋值非函方式)
	public static void main(String[] args) {
	    int x = 9;
            System.out.println(x);
	    y = x;
            y = 10;
	    System.out.println(x);
	}
}

 這裡x與y就是基本資料類型,賦值後把x的值傳給了y,相當於是複製了一份副本,而不是把整個x(即x位址)給了y。

public class PassByValueReference {
        //引用传递(赋值非函方式)
        public static void main(String[] args) {
		int [] x = {1};
		System.out.println(x[0]);
		int [] y = x;
		y[0] = 0;
		System.out.println(x[0]);
	}
}

這裡x與y是數組,這次的程式碼中不是簡單地令x[0]=y[0],而是直接令x=y,此賦值語句把x的陣列位址都給了y,相當於是在「同一條船上」了,一起發生變化,y[0]變了同時x[0]也改變。

 相關推薦:

Java值傳遞與引用傳遞詳解

#java軟體工程師學php -13. 值傳遞與引用傳遞#

以上是Java中值傳遞與引用傳遞之間的區別分析(附程式碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn