private static Virtualizer createVirtualizer()
{
try
{
if (virtualizer == null)
{
Virtualizer localVirtualizer1 = new Virtualizer(0, 0);
virtualizer = localVirtualizer1;
localVirtualizer1.setEnabled(true);
}
Virtualizer localVirtualizer2 = virtualizer;
return localVirtualizer2;
}
finally {}
}
我正在修改某人的代码。我认为此代码不需要localVirtualizer
。主要的是我为什么在这里。如果initialize
中有java
个对象。他们是指同一地点。正如您在初始化后看到的那样
virtualizer = localVirtualizer1;
他设置了启用localVirtualizer1.setEnabled(true);
这意味着虚拟化器也可以启用。我有正确的概念吗?
如果他们正在引用,则启用它们两者,否则不启用虚拟器。
答案 0 :(得分:2)
是的,你做得对。 Java中的对象总是通过引用传递(而非对象,如int, float, double
通过值传递)。因此,virtualizer和localVirtualizer1都引用内存中的同一对象。它们只是同一对象的不同别名。因此,改变一个也会更新另一个。
答案 1 :(得分:1)
这取决于你想要传递的变量。例如,int变量按值传递,数组/列表按引用传递。简而言之,所有对象都通过引用传递,而普通变量/数据类型则不是。
在你的代码中,我看到你正在调用静态方法。因此,在您的方案中,只有一个对象,它被引用。