重複の可能性:
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: nullpointer例外。
実際のO/P: 5。