Java,当你做object = object时内部发生了什么?

时间:2018-02-05 11:08:50

标签: java object singly-linked-list object-reference

我在Java中实现单链表,我遇到了问题。 除了节点之外,很多人都使用这样的临时节点:

public Object removeFirst() {
   Node temp = head;
   head = temp.next;
   Object returnData = temp.data;
   temp = null;
   size--;
   return returnData;
}

为什么这个临时节点是必需的?乍一看,我认为为了删除第一个元素我必须做的就是将第二个元素更改为头节点。

所以我的问题是在java中,object= object是什么意思?继承每个字段和方法,2个对象是否完全相同?

2 个答案:

答案 0 :(得分:6)

temp不需要。它用于在Node变量不再引用head之后获取已移除的Node的数据,但可以在没有它的情况下完成:

public Object removeFirst() 
{
    Object returnData = head.data;
    head = head.next;
    size--;
    return returnData;
}

答案 1 :(得分:2)

  

object = object是什么意思?

一个类提供对象的蓝图;你从一个类创建一个对象。

new运算符返回对其创建的对象的引用。此引用通常分配给适当类型的变量

假设您已创建新对象 head

将一个对象复制到另一个对象时,会为该对象创建第二个引用。

Node temp = head;

如果将第二个对象(引用)设置为null,则仍可通过第一个引用( head )访问此对象。

  

继承每个字段和方法,2个对象是否完全相同?

是的,因为只有参考不同但对象是相同的。

您可以在oracle文档page

中找到更多详细信息
  1. 当你没有创建对象(实例化类)时:
  2. enter image description here

    1. 使用new运算符创建对象时:
    2. enter image description here

      1. 将对象分配给另一个对象时:
      2. enter image description here