在玩 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 的值相同