samwellwang

samwellwang

coder
twitter

Java 是值傳遞還是引用傳遞

Java 到底是™值傳遞還是引用傳遞今天寫程式碼的時候發現個有趣的事兒,就是我傳兩個一個引用對象給一個轉換函數。

2020-03-30

Java 到底是™值傳遞還是引用傳遞#

今天寫程式碼的時候發現個有趣的事兒,就是我傳兩個一個引用對象給一個轉換函數。結果的我的函數沒有生效!!剛開始以為沒編譯的問題,
clean 之後還是不行。來來回回快一個小時了,真的是氣煞我也。難道說不是一直以為的地基本參數類型傳值,引用類型傳引用麼?經過一番學習得知,果然是不要我以為的,要 Java 規範以為的啊!

廢話不多說,先上結論:妥妥的值傳遞!
基本類型就不多說了,傳的是基本類型的副本,
但是注意對於引用類型,傳的是引用地址的副本。
上程式碼:

package com.dareway.demo;

public class Person{
	public String name;
	public int age;
	Person(){
		
	}
	Person(String n ,int a){
		this.name=n;
		this.age=a;
	}
}

public class Test{

	public static void main(String[] args) {
		Person one = new Person("wang",22);
		Person two = new Person("yang",23);
		switchEach(one,two);
		System.out.println("one's name :"+one.name);
		System.out.println("two's name :"+two.name);
		
	}

輸出結果:

p1's name :yang
one's name :Jisoo
two's name :yang

也就是說,傳遞的引用參數,可以改變內部的狀態,但是不能指向一個新的地址。因為複製的只是應用地址的拷貝。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。