可能重复:
Java、按值传递、引用变量
我对 JAVA 按值传递究竟如何与对象一起工作有点困惑。例如,如果我将一个对象作为参数传递给该方法。我知道它的地址是作为值传递的。好的,对象的副本是否保留在传递对象的原始位置表单中,因为如果我在被调用的 API 中创建对对象的新引用并更改其中的某些内容,它不会反映在我的调用者中API。
下面是一段典型的代码,我尝试删除一棵树,但它仍然存在。
public class DeleteTree {
public static void main(String[] args) {
Node root = new Node(5);
for(int i = 0 ; i < 10 ; i++){
if(i == 5) continue;
root.insertNode(i);
}
deleteTreeNonRecursive(root);
System.out.println(root.key);
}
public static void deleteTreeNonRecursive(Node root){
Queue<Node> q = new LinkedList<Node>();
q.add(root);
while(!q.isEmpty()){
Node temp = q.poll();
if(temp.leftChild != null)q.add(temp.leftChild);
if(temp.rightChild != null)q.add(temp.rightChild);
temp = null;
}
}
预期的 O/P:空指针异常。
实际 O/P: 5。