使用对象作为函数的参数

对象作为函数的参数

当对象作为函数的参数传递到方法中时,实际上传递的是对象的地址值。

1. 以传递TreeNode对象为例,root传递给change函数的是root的地址值。

public static void change(TreeNode node)
{
}

public static void main(String[] args) {
       TreeNode root=new TreeNode(5);
       change(root);
}

class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;
    TreeNode() {}
    TreeNode(int val) { this.val = val; }
    TreeNode(int val, TreeNode left, TreeNode right) {
        this.val = val;
        this.left = left;
        this.right = right;
    }
}

在内存中参数传递的示意图:

2. 改变引用对象的值,真实值不变。

public static void change(TreeNode node)
{
        node=null;
}

public static void main(String[] args) {
       TreeNode root=new TreeNode(5);
       change(root);
}
输出:
root=com.tree.TreeNode@41629346
node=null

3.创建root时,初始化root.left对象

4.通过引用对象node改变left的值,真实值改变

public static void change(TreeNode node)
{
        node.left=null;
}

public static void main(String[] args) {
       TreeNode root=new TreeNode(5);
       root.left=new TreeNode(4);
       change(root);
}
输出:
root.left=null;
node.left=null;

 

posted @ 2022-01-04 13:53  言思宁  阅读(154)  评论(0编辑  收藏  举报