Lemon_CHA
DeSt!ny
2021-02-13 20:02
采纳率: 100%
浏览 35
已采纳

JAVA形参影响了实参吗?

public class List203 {

    public static class ListNode {

        int val;
        ListNode next;
        ListNode() {}
        ListNode(int val) { this.val = val; }
        ListNode(int val, ListNode next) { this.val = val; this.next = next; }
        public void add(int newval) {
            ListNode newNode = new ListNode(newval);
            if(this.next == null)
                this.next = newNode;
            else
                this.next.add(newval);
        }
        public void iterate(ListNode head){
            if (head == null){
                System.out.print("This list is NULL");
            } else {
                while (head != null){
                    System.out.print(head.val + " ");
                    head = head.next;
                }
                System.out.println(" ");
            }
        }
    }
    public static ListNode removeElements(ListNode head,int val){
        ListNode dummy = new ListNode(0);
        dummy.next = head;
        ListNode prev = dummy;
        while (head != null){
            if (head.val == val){
                prev.next = head.next;
            } else {
                prev = head;
            }
            head = head.next;
        }
        return dummy.next;
    }

    public static void main(String[] args) {
        ListNode node = new ListNode(0);
        node.add(1);
        node.add(1);
        node.add(2);
        node.add(3);
        node.add(4);
        node.add(5);
        node.add(6);
        
        node.iterate(node);
        ListNode newnode = removeElements(node, 1);
        node.iterate(node);
        node.iterate(newnode);
    }
}

如上代码,我在JAVA中实现了一个链表,然后调用去除链表中元素的函数,然后打印调用前和调用后的链表,结果以node为头结点的链表发生了变化,难道不是应该不变吗? 新人不太懂,求解答。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • qq_38167579
    农夫丶果园 2021-02-15 09:48
    已采纳

    对象和基本类型是不一样的,你传入对象的引用,并用这个引用改变了对象的信息,那么你再拿一个引用去指向这个对象时得到的就是改变后的对象信息。

    点赞 1 评论
  • Lemon_CHA
    DeSt!ny 2021-02-13 20:03

    打印结果如图所示,为什么传入的node也受到了影响,难道不是传入的是形参吗?新手不太懂

    点赞 评论

相关推荐