Java “我是如何改变的?”;这";在方法append(int n)中?

Java “我是如何改变的?”;这";在方法append(int n)中?,java,linked-list,this,Java,Linked List,This,我将LinkedNode“node”初始化为关键字“this”,然后将新节点“last”附加到创建的节点“node”的末尾。但请注意,在while循环中,我将“node”更改为“node.next”。为什么在我运行程序时它会打印正确的结果?也许我不太懂“这个” public class LinkedNode { protected LinkedNode next; protected int data; LinkedNode(int d) { data

我将LinkedNode“node”初始化为关键字“this”,然后将新节点“last”附加到创建的节点“node”的末尾。但请注意,在while循环中,我将“node”更改为“node.next”。为什么在我运行程序时它会打印正确的结果?也许我不太懂“这个”

public class LinkedNode {

    protected LinkedNode next;
    protected int data;

    LinkedNode(int d) {
        data = d;
    }

    public void append(int n) {
        LinkedNode node = this;
        LinkedNode last  = new LinkedNode(n);
        while (node.next != null) {
            node = node.next;
        }
        node.next = last;
    }

    public static void main(String[] args) {
        LinkedNode Node = new LinkedNode(2);
        Node.append(3);
        Node.append(4);
        Node.append(5);
        for (int i = 0; i < 4; i++) {
            System.out.println("Data: "+Node.data);
            Node = Node.next;
        }
    }
    //Output is correctly "2 3 4 5"
}
公共类LinkedNode{
下一步保护LinkedNode;
受保护的int数据;
链接节点(int d){
数据=d;
}
公共无效附加(int n){
LinkedNode节点=此节点;
LinkedNode last=新的LinkedNode(n);
while(node.next!=null){
node=node.next;
}
node.next=last;
}
公共静态void main(字符串[]args){
LinkedNode节点=新LinkedNode(2);
追加(3);
追加(4);
节点追加(5);
对于(int i=0;i<4;i++){
System.out.println(“数据:“+Node.Data”);
Node=Node.next;
}
}
//输出正确为“2 3 4 5”
}

我不知道您是否理解“this”,但我怀疑您不理解java

append()
函数中,
节点
是指向
LinkedNode
类型的对象的指针。最初,指针设置为指向与
指针相同的位置,因此它指向当前对象

然后,在循环中,
节点
指针被设置为指向其他对象,在最后一行中,一个新值(“last”)存储在对象的一个字段中,该字段恰好由循环后的
节点
指针指向

如果循环根本没有循环,则
节点仍指向当前对象,因此修改当前对象。如果循环循环一次或多次,则
节点
指向其他对象,从而修改其他对象

在任何时候都不会试图更改
这个
指针,也不会进行这样的尝试,因为这在java中是非法的