Javaで遊んでいる間。オブジェクトが変更されて値が与えられた場合と、新しいオブジェクトが割り当てられた場合に別の値が与えられた場合、異なる動作が見られました。結果を表示するために作成したコードを次に示します。
public class Test {
int i;
public Test(int j) {
this.i = j;
}
public static void main(String[] args) {
Test A = new Test(5);
Test N = new Test(5);
add(A);
makeNew(N);
System.out.println("Value of A.i= "+A.i);
System.out.println("Value of N.i= "+N.i);
}
private static void add(Test t) {
t.i+= 3;
System.out.println("Inside method add() t.i= "+t.i);
}
private static void makeNew(Test t) {
t = new Test(8);
System.out.println("Inside method makeNew() t.i= "+t.i);
}
}
上記のコードの出力は次のとおりです。
Inside method add() t.i= 8
Inside method makeNew() t.i= 8
Value of A.i= 8
Value of N.i= 5
上記の例では、オブジェクト A は値 8 に変更されます。また、オブジェクト B には新しいオブジェクト自体が与えられます。しかし、オブジェクト A だけを呼び戻すと、新しい価値が示されます。オブジェクト B は古い値そのものを示しています。どちらの場合も参照渡しであるため、同じ値を表示するべきではありませんか? Ai と Ni に同じ値を期待していました