Java更改一个对象的值
为什么我不能在上面的代码中更改objectnum的值?如何修改它以实现操作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[]
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;
}