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

看到一個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的值不會發生變化。spa

相關文章
相關標籤/搜索