我在一个类中有一个 Long 对象,我给它一个值,然后我将它传递给另一个类的构造函数,在那里它被改变了。为什么在第一个对象中看不到更改?
编码:
public class ClassA {
private Long t;
public ClassA() {
t = new Long(10);
System.out.println(t); // prints 10
new ClassB(t); // it is modified (see ClassB)
System.out.println(t); // prints 10 again
}
public static void main(String[] args) {
new ClassA();
}
}
class ClassB {
private Long p;
public ClassB(Long p) {
this.p = p;
this.p = this.p + 1;
System.out.println(this.p); // prints 11
}
}
输出为: 10 11 10 Long 变量在 ClassA 中初始化。然后我将它传递给 ClassB,对其进行修改,显然这些更改在第一堂课中不可见。为什么?