class TreeNode{
int data;
TreeNode left;
TreeNode right;
}
public class Test {
public static void main(String[] args) {
TreeNode root = new TreeNode(); //创建root对象
insert1(root, 6);
System.out.println(root.data); //Java成员变量有初始值,而局部变量没有初始值。
insert2(root, 6);
System.out.println(root.data);
}
public static void insert1(TreeNode root, int data) {
TreeNode newNode = new TreeNode;
newNode.data = data;
newNode.left = newNode.right = null;
root = newNode; //方法中的root指向新的地址
}
public static void insert2(TreeNode root, int data) {
root.data = data;
root.left = root.right = null;
}
}
总结:
java方法的形参是实参的副本,如果在方法中改变了副本的地址,副本就指向了新的地址,而实参还是指向原来的地址。若副本的地址没有发生改变,就能通过地址来改变成员变量的值。
Reference
https://blog.csdn.net/maoyeqiu/article/details/49250339