java中方法的參數傳遞機制(值傳遞還是引用傳遞)


看到一個java面試題:

問:當一個對象被當作參數傳遞到一個方法后,此方法可改變這個對象的屬性,並可返回變化后的結果,那么這里到底是值傳遞還是引用傳遞? 
  答:是值傳遞。Java 編程語言只有值傳遞參數。當一個對象實例作為一個參數被傳遞到方法中時,參數的值就是該對象的引用一個副本。指向同一個對象,對象的內容可以在被調用的方法中改變,但對象的引用(不是引用的副本)是永遠不會改變的。

以下是從其他文章里轉的,只為加深理解

 

public class TempTest {  
private void test1(A a){  
a.age = 20;  
System.out.println("test1方法中的age="+a.age);  
}  
public static void main(String[] args) {  
TempTest t = new TempTest();  
A a = new A();  
a.age = 10;  
t.test1(a);  
System.out.println(”main方法中的age=”+a.age);  
}  
}  
class A{  
public int age = 0;  
} 

 

結果是

test1方法中的age=20  
main方法中的age=20

說明:在執行第10步t.test1(a); 時,main()中的變量a和test1中的變量a指向同一個地址,在test1方法中並沒有改變a的地址而是改變了屬性的值,所以結果是main方法中的a的值發生了變化,但是這不是引用傳遞。除非在test1方法中new一個新的對象,把這個新的地址賦給a,則為引用傳遞,其結果中a的值不會發生變化。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM