Java中的参考资料。两个例子,有什么区别?

时间:2011-10-04 17:13:22

标签: java pointers reference

我和我的朋友争吵。

时:

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,但他不同意

4 个答案:

答案 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;
    }
}