我来到这篇文章:
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 ----> |----------------------|
答案 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是可能的,因为您可以保证对象永远不会改变。