为什么分配的java变量的行为类似于引用?
嗨,我不知道以前是否有人问过这个问题,但这真的很烦人
好的,我有一个叫做Test的类:
public class Test {
public static Test testObject = new Test(5);//Creates a test object with an initialized value of 5;
int number;
public Test(int number){
this.number = number;
}
}
当然我的主课
public class Main {
public static void main(String args[]){
Test anotherObject = Test.testObject;//this is not a reference right?
System.out.println(Test.testObject.number);//This prints 5
anotherObject.number = 50;// changing anotherObject's number. NOT testObject's Number.
System.out.println(Test.testObject.number);//if that was true this whould of still been 5, but it prints 50!!?? why does testObject's number even change if im not even changing that value?
}
}
如果我做错了什么,请告诉我,非常感谢
# 1 楼答案
在你的程序中,你有一个
Test
的实例,你只是每次给它取不同的名字不创建新对象。它只引用同一个对象,你说“每当我写
anotherNumber
,我实际上是想写Test.testObject
”所以,当你以后改变
anotherNumber.number = 50;
时,你会:Test.testObject.number = 50;
,因此当你打印Test.testObject
时,你会看到50编辑:
如果希望能够创建某个对象的副本,可以引入副本构造函数:
并与
someOtherNumber = new Test(Test.testObject);
一起使用