我是java的初学者,我正在阅读这段代码
ListNode current = new ListNode();
current = front;
和
ListNode current = front;
不是两组语句都创建了一个新对象,还是只为第一个文件保留了内存,而第二个只有一个vatriable被声明为保存前端节点的内存?
答案 0 :(得分:3)
ListNode current = new ListNode();
current = front;
这会创建一个新的ListNode
并将其分配给current
。然后它立即覆盖该引用,丢失对新对象的引用。这几乎肯定是一个错误。代码等同于
new ListNode();
ListNode current = front;
如果ListNode()
构造函数没有副作用,那第一个语句就没用了,可能只是
ListNode current = front;
答案 1 :(得分:1)
第一个语句实际上创建了一个新对象(因为current
指向下一条指令中的另一个对象,它将很快被垃圾收集),而第二个只创建对现有对象的引用。
推荐的代码是第二个,因为在第一个中创建的ListNode
从未使用过,因此实例化它是没用的。