在Java中对象和对它的引用

时间:2017-10-22 20:24:20

标签: java object reference

我来到这篇文章:

http://www.informit.com/articles/article.aspx?p=174371&seqNum=4

如果我以这种方式创建变量,我认为这不是用于显示对象引用的正确图片:

pt1 = new Point(100,100)
pt2 = new Point(100,100)

我的问题是:

如果我如上所述创建两个点,对象/对象的引用是什么样的,会发生哪种情况? (我假设选项1是正确的):

选项1:

pt1 ---->[Point object: 100, 100]

pt2 ---->[Point object: 100, 100]

选项2:

pt1 ----> |----------------------|
          |Point object: 100, 100|
pt2 ----> |----------------------|

3 个答案:

答案 0 :(得分:3)

如果你说:

pt1 = new Point(100,100) 
pt2 = new Point(100,100)

然后选项1是正确的。

如果你说:

pt1 = new Point(100,100)
pt2 = pt1

然后选项2出现

答案 1 :(得分:0)

是的,你是对的,选项1是正确的。

答案 2 :(得分:0)

只是指出为什么只有选项1才是正确的:想想如果选项2是正确的后果会是什么:

pt1 = new Point(100,100)
pt2 = new Point(100,100)

pt1.x = 200

System.out.println(pt2.x)

那会打印什么?

如果对类似对象的引用自动指向同一个内存,则修改一个将修改另一个内存,但仅限于创建类似对象的情况。至少可以说,这将是令人惊讶的行为。

应该注意的是,在强调不变性的语言中,选项2是可能的,因为您可以保证对象永远不会改变。