java - Java中链表的以下两种实现是否相同?
问题描述
实施1->
public class Node<T> {
T data;
Node<T> next; // next should point to a node which contains data of type T
Node(T data){
this.data = data;
this.next = null;
}
}
实施 2 ->
public class Node<T> {
T data;
Node<T> next; // next should point to a node which contains data of type T
Node(T data){
this.data = data;
}
}
由于在JAVA中引用默认为null,那么以上两种实现方式相同吗?我以前在 C++ 中实现过链表,对 JAVA 实现感到困惑
解决方案
两种实现是平等的。在您的案例中,创建新对象的阶段包括几个阶段(简化):
- 在字段上设置默认值
data, next
,因为它们是对 Object 类实例的引用,那么它们将是null
。 - 执行构造函数时,在第一个实现中在字段中设置 null 值是没有意义的,
next
因为它已经在第一阶段被 Java 设置为 null。还有其他可能的阶段,例如,当您从另一个类继承时,在这种情况下,将在当前类的构造函数之前调用父类构造函数。查看文档或文章了解更多详细信息(例如 - https://farenda.com/java/java-initialization-order/)。
推荐阅读
- javascript - 如何在比较当前元素和下一个元素时迭代数组的最后一个元素?
- mysql - Mysql 通过命令行连接权限被拒绝,但工作台工作正常
- php - PHP计算时间并分为白天/夜间
- git - Intellij IDEA:存储库测试失败无法访问:错误设置证书验证位置
- karate - 使用输入作为 JsonArray 调用功能,而不会因转换问题而引发空手道异常
- javascript - 如何在不使用 id 的情况下巧妙地选择特定的 div
- java - 对 OOP 和过程式编程做出这样的肯定是否正确?
- c++ - 如何避免 #define 语法的变量重新声明?
- css - 在 :hover 和 @keyframes 中为同一个 div 使用变换属性
- ubuntu - 如何在 Ubuntu 上安装 Pentaho 社区服务器