我和我的朋友争吵。
时:
public class Thing
{
private Thing s;
public void foo(Thing t)
{
s = t;
t.s = this;
}
}
与:
相同public class Thing
{
private Thing s;
public void foo(Thing t)
{
s = t;
s.s = this;
}
}
我认为它是相同的,因为在两种情况下s被设置为t,但他不同意
答案 0 :(得分:6)
它们是相同的,因为您将它们设置为相同的参考。
但是,如果您使用new
两次,那么引用会有所不同,那么您的朋友就是正确的。
答案 1 :(得分:1)
对象在Java中通过引用传递。这些都应该是一样的。
答案 2 :(得分:1)
我也认为它是一样的,但你可以肯定地检查它。只做两个对象的println。如果你还没有实现tostring()方法,它会打印堆中的位置。如果位置相同,那么你是对的。
答案 3 :(得分:0)
变量重命名和明确写this
可能会更清晰:
时:
public class Node
{
private Node next;
public void foo(Node t)
{
this.next = t;
t.next = this;
}
}
与:
相同public class Node
{
private Node next;
public void foo(Node t)
{
this.next = t;
this.next/*==t*/.next = this;
}
}