繁体   English   中英

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

[英]Java, what is happening internally when you do object = object?

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

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

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

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

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

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

object = object是什么意思?

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

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

假设您已创建新的对象

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

Node temp = head;

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

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

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

您可以在oracle文档页面中找到更多详细信息

  1. 当你没有创建对象(实例化类)时:

在此输入图像描述

  1. 使用new运算符创建对象时:

在此输入图像描述

  1. 将对象分配给另一个对象时:

在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM