首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >head=head.getNext()和head=current.getNext()有什么区别?

head=head.getNext()和head=current.getNext()有什么区别?
EN

Stack Overflow用户
提问于 2014-02-24 10:01:03
回答 2查看 1.4K关注 0票数 0

我想实现一个LinkedListremove方法来删除任何特定位置的项,但在本例中,我最感兴趣的是删除列表开头(第零位)的项。

我的代码适用于n大于0的值,所以我为when n==0写了一条if语句,但是直到我用谷歌搜索了答案之后,我才明白为什么它不能工作,对我来说,答案看起来和我写的很相似。

代码语言:javascript
复制
public class LinkedList<E> extends Node<E>{
public LinkedList(){}
public Node<E> head;
//removes node at n and returns contents of removed node; 
public E remove(int n){
    Node<E> current = head; T info;
    if(n==0){info=current.getInfo();
        head=current.getNext();return info;}
    }
}

我最初的声明是head=head.getNext(),而不是head=current.getNext(),因此我提出了这个问题。这两者有什么不同?

它们是否等同,但执行方式不同?谢谢

EN

回答 2

Stack Overflow用户

发布于 2014-02-24 10:10:02

如果head的值赋给了current (就像这里一样),那么它们应该是等价的。因为它们是对象,而不是基元,所以将一个赋值给另一个会使它们都引用同一个对象。因此,调用head.getNext()current.getNext()都应该返回对同一对象的引用。

票数 2
EN

Stack Overflow用户

发布于 2014-02-24 10:08:49

head (this.head的缩写)是object属性,而current是一个局部变量,它只在声明它的代码块中可见。

WHen只是检索值,没有区别,所以如果这真的是您更改的全部,两个版本都应该可以工作。

然而,Modifygin是不同的。当更改current时,更改不会反映在块之外,如果函数完成,current将被删除。但是,如果更改了this.head,则更改了存储在对象属性y中的引用,并且该更改将在函数结束后保留。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21977613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档