Java 到底是™值傳遞還是引用傳遞今天寫程式碼的時候發現個有趣的事兒,就是我傳兩個一個引用對象給一個轉換函數。
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
也就是說,傳遞的引用參數,可以改變內部的狀態,但是不能指向一個新的地址。因為複製的只是應用地址的拷貝。