比方說,我有這樣的Java代碼(中期審查!):的Java:對象指針處理
public class A {
public int key;
}
public class B extends A {
}
public class Problem1 {
public static void f(A x) {
A y = x;
y.key = x.key + 1;
}
public static void f(B x) {
B y = new B();
y.key = x.key + 2;
x = y;
}
public static void main(String[] args) {
A p = new A();
p.key = 3;
B q = new B();
q.key = 10;
f(p);
f(q);
p = q;
f(p);
System.out.println(p.key);
}
}
我不知道我正確理解P = Q。這是我迄今爲止的理解:因爲B擴展了A,所以這個操作是允許的,但它不會使p和q指向同一個對象。相反,它更新了p的關鍵值,但它仍然是A類。這就是爲什麼f(p)在最後返回11的原因。這並不符合我以前對Java的瞭解,因此我們將對此作出解釋。
例如,如果我有一個整型A = 4和INT B = 3,那麼我這樣做:
a = b;
b++;
return a;
一個將返回3,即使它應該是指向將b指向同樣的事情?
請指教。
原始對象的處理方式不同。如果在你的例子中你有Integer而不是int,它將按你的預期工作。 – sashkello
查看第二個答案在這裏:http://stackoverflow.com/questions/869033/how-do-i-copy-an-object-in-java – sashkello