好吧,有点奇怪的问题。我有以下代码,它只是创建了一个名为 DumObj 的简单 java 对象,并使用 setter 方法设置了一个字符串值。然后使用 DumObj 作为参数从 TestBed 类调用一些方法。
我最初认为调用 TestBed.updateId(DumObj) 不会影响我的 DumObj,并且设置为“apple”的 ID 的初始值将保持不变。(因为整个按值传递的事情)
但是 ID 的值被设置为“橙色”的更新值。好吧,我想,这很奇怪,所以我写了另一个方法,TestBed.setToNull(DumObj)。这个方法只是将 DumObj 设置为 null,所以当我调用 getId() 方法时,我期望得到一个空指针异常。
但是我得到的输出是 ID 的值仍然设置为“橙色”。
代码如下:
public static void main(String[] args)
{
TestBed test = new TestBed();
DumObj one = new DumObj();
one.setId("apple");
System.out.println("Id : " + one.getId());
test.updateId(one);
System.out.println("Id : " + one.getId());
test.setToNull(one);
System.out.println("Id : " + one.getId());
}
public void updateId(DumObj two)
{
two.setId("orange");
}
public void setToNull(DumObj two)
{
two = null;
}
输出如下:
Id : apple
Id : orange
Id : orange
这可能是我忽略的非常简单的事情,但是有人可以向我解释这种行为吗?Java不是按值传递吗?