对象及其在Java中的引用
我读了这篇文章: 如果我以这种方式创建变量,我认为用于显示对象引用的图片是不正确的:对象及其在Java中的引用,java,object,reference,Java,Object,Reference,我读了这篇文章: 如果我以这种方式创建变量,我认为用于显示对象引用的图片是不正确的: pt1 = new Point(100,100) pt2 = new Point(100,100) 我的问题是: 如果我像上面那样创建两点,会发生什么情况?对对象的引用是什么样子的?(我假设选项1是正确的): 备选案文1: pt1 ---->[Point object: 100, 100] pt2 ---->[Point object: 100, 100] 备选案文2: pt1 ----&g
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 ----> |----------------------|
如果你说:
pt1 = new Point(100,100)
pt2 = new Point(100,100)
那么选项1是正确的
如果你说:
pt1 = new Point(100,100)
pt2 = pt1
然后出现选项2是的,你是对的,选项1是正确的。只是为了指出为什么只有选项1是正确的:想想如果选项2是正确的,会有什么后果:
pt1 = new Point(100,100)
pt2 = new Point(100,100)
pt1.x = 200
System.out.println(pt2.x)
那会印什么
如果对相似对象的引用自动指向同一内存,修改其中一个将修改另一个,但仅在创建相似对象的情况下。至少可以说,这是一种令人惊讶的行为
但是应该注意的是,在强调不变性的语言中,选项2是可能的,因为您可以保证对象永远不会改变 因此,我同意为什么我认为应该有两张图片包含在提到的文章中,供任何初学者看到这些信息。不管怎样,谢谢你的回答。@BlueTomato给文章作者写信比在这里发帖更有可能做出这种改变。
new
意味着新。您创建的每个点都是一个新对象。