将对象分配为null

时间:2012-12-18 05:51:37

标签: java

如果我实例化一个对象并将其传递给一个函数,在这个函数中我将该对象赋值为null。 似乎从函数返回时,对象仍然存在。

我只想知道何时分配null,会发生什么。

4 个答案:

答案 0 :(得分:8)

您永远不能分配给对象。你所拥有的只是原始和参考。引用是null或指向合适类的对象的指针。

Java参数按值传递。您调用的方法获得了引用的副本。它使该引用为null。调用方法有自己的引用,不受传递副本的任何赋值的影响。该引用仍指向该对象。

答案 1 :(得分:1)

Java中方法的参数是“按值传递”,这意味着您将对象引用的副本传递给方法。为此引用赋值null将在方法调用中更改其值 ,但对方法外的引用不执行任何操作,因为它是副本。用代码说明:

void doSomething(final String input) {
    input = null;
    System.out.println("Input is: " + input); // prints null
    return;
}

final String name = "Bob";
doSomething(name);
System.out.println("Name is: " + name); // prints 'Bob'

答案 2 :(得分:1)

当你实例化一个对象并将它传递给一个函数,并且在函数内部你将它重新分配给null或者其他什么时,在调用方它不会反映为参数是按值传递的(对象的引用副本) ,在呼叫方,它仍将指向旧的对象。如果要限制在方法中重新分配,可以在方法参数

中使用final关键字

答案 3 :(得分:0)

当你将对象引用传递给一个函数(Java总是调用它的方法)时,在方法作用域中,会在堆栈内存上创建一个新的引用,但是它们指向堆内存中的同一个对象。所以如果你赋值为null到新的引用,只有这个引用到该对象的链接是中断,它不会影响流行的。