原文在此,寫的非常好,解答了我的疑問
http://www.javadude.com/articles/passbyvalue.htm
首先放上一段代碼,我是在找尋這段代碼的内部原理的時候,在stackoverflow上看到了上面那篇文章作者的答案,于是閱讀一番,受益匪淺
package learnJava;
class A{
int value;
public A(int value) {
this.value = value;
}
public void setValue(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
public class TestClass {
public static void changeValue(A a, A b){ //這隻是改變了指向Object的局部變量指針的值,是以method外面是不會改變的
a = b;
}
public static void changeValue2(A a){ //這裡是對局部變量的指針指向的Object進行set操作,是以method外也會改變
int v = a.getValue();
v++;
a.setValue(v);
}
public static void main(String[] args) {
A a1 = new A(3);
A a2 = new A(8);
System.out.println(a1.value); // 3
changeValue(a1, a2);
System.out.println(a1.value); // 3
changeValue2(a1);
System.out.println(a1.value); // 4
}
}
轉載于:https://www.cnblogs.com/wmxl/p/11000526.html