java 中的变量被复制或引用
Variables in java are copied or referenced
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);
这意味着虚拟器也已启用。我的概念正确吗?
如果它们正在引用,则它们都已启用,否则虚拟器未启用。
是的,你没看错。 Java 中的对象总是通过引用传递(而非对象,如 int, float, double
则通过值传递)。所以 virtualizer 和 localVirtualizer1 都指向内存中的同一个对象。它们只是同一对象的不同别名。因此,更改一个也会更新另一个。
这取决于您要传递的变量。例如,int 变量是按值传递的,而 array/list 是按引用传递的。简而言之,所有对象都是通过引用传递的,而正常的 variables/datatypes 不是。
在你的代码中,我看到你正在调用静态方法。因此,在您的场景中只有一个对象并且被引用。
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);
这意味着虚拟器也已启用。我的概念正确吗?
如果它们正在引用,则它们都已启用,否则虚拟器未启用。
是的,你没看错。 Java 中的对象总是通过引用传递(而非对象,如 int, float, double
则通过值传递)。所以 virtualizer 和 localVirtualizer1 都指向内存中的同一个对象。它们只是同一对象的不同别名。因此,更改一个也会更新另一个。
这取决于您要传递的变量。例如,int 变量是按值传递的,而 array/list 是按引用传递的。简而言之,所有对象都是通过引用传递的,而正常的 variables/datatypes 不是。
在你的代码中,我看到你正在调用静态方法。因此,在您的场景中只有一个对象并且被引用。