Java更改一个对象的值

Java更改一个对象的值,java,Java,为什么我不能在上面的代码中更改objectnum的值?如何修改它以实现操作 public class Test { public Integer num = 1; public void change(Integer n) { n = null; } public void print() { System.out.println(num); } public static void main(String[]

为什么我不能在上面的代码中更改objectnum的值?如何修改它以实现操作

public class Test {
    public Integer num = 1;

    public void change(Integer n) {
        n = null;
    }

    public void print() {
        System.out.println(num);
    }

    public static void main(String[] args) {
        Test test = new Test();
        test.change(test.num);
        test.print();
    }
}
n是一个局部变量

将其更改为num=null

如果您希望将num的值设置为null,就像您在注释中所说的那样,则无需将任何内容作为参数传递。这就行了

public void change(Integer n) {
    n = null;
}

另外,不要将num公开。保密。这是一个很好的实践,并且必须遵循一个IMO,除非您有很强的理由

除了其他答案中提供的内容之外,Java是按值传递的。当您调用以基元变量作为参数的函数时,被调用函数将使用您用作参数的变量的本地副本。它将只提取该变量的值。对被调用函数中的参数变量所做的更改不会影响原始变量。

@Michael num=n只是一个setter。我不明白你说的值是什么意思每次都被设置为相同的值实际上,我想把num改为null。我正在实现一个树数据结构。我想使用类似的函数删除树的每个节点。@Michael哦,是的。你是right@Fergus在这种情况下,只需将其设为null。看我的EDIT@Michael谢谢我这样做通常是为了表示一些可能不太重要/相关的东西,这些东西是在我最初的答案之后添加的,基于对Got it的反对副本的评论/编辑,谢谢!
public void makeNull() { //or call it setNull
    num = null;
}