看到一個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