这个问题更多的是关于适当的Java程序构造。我在想:这会发生什么
public Clazz {
this.someClazz = new SomeClazz();
} //initialization
Clazz x = y;
上面的构造函数被执行了还是被跳过了,并且某些Clazz成员立即获得了新值?
您需要区分变量,对象和引用。
的价值观x
和y
不是对象-他们只是引用。赋值运算符只是将值从右侧的表达式复制到左侧的变量。因此,在您的情况下,它会将in的值复制y
到x
...处,这两个变量的值都指向同一对象。没有构造函数或任何其他成员被调用-它只是复制一个值。因此,例如:
// Assuming appropriate methods...
x.setFoo("new foo");
System.out.println(y.getFoo()); // Would print "new foo"
但是,这两个变量仍然是独立的:
x.setFoo("new foo");
x = new Clazz();
x.setFoo("yet another foo");
System.out.println(y.getFoo()); // Would print "new foo"
这里,第二行之后,的值x
和y
参考不同的对象,因此调用x.setFoo()
不改变的值foo
,所述对象物的内部y
是指。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句