2017-10-22 1 views
1

でそれを参照するには、私はこの記事accrossに来た:オブジェクトとJava

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

と私はそれが私は、このような方法で変数を作成する場合は、オブジェクトへの参照を表示するために使用正しい絵だとは思わない:

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

私の質問は:

私は上記のように2点を作成する場合は/オブジェクトをオブジェクトへの参照がどのように見えるか、行われる状況? (私はオプション1が正しいと仮定):

オプション1:

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

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

オプション2:

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

「新規」は新規を意味します。あなたが作ったそれぞれの「ポイント」は新しいオブジェクトです。 – khelwood

答えて

3

あなたが言う場合:

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

その後、オプション1が正しいです。

あなたが言う場合:

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

その後、オプション2は

+0

私はこのような情報を渡って来る初心者のために、上記の記事に2枚の写真が含まれるべきだと私は思うのです。とにかくあなたの答えをありがとう。 – BlueTomato

+0

@BlueTomatoは、この記事の著者に書くことで、ここに質問を投稿するよりも、この変更が得られる可能性が高くなっています。 –

0

を発生はい、あなたは正しい、オプション1は正しいです。オプション2が正しかった場合の結果がどうなるかを考える:唯一のオプション1が正しいことができる理由だけでを指摘する

0

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

pt1.x = 200 

System.out.println(pt2.x) 

何がその印刷のでしょうか?

類似のオブジェクトへの参照が自動的に同じメモリを指している場合は、類似のオブジェクトへの参照が変更されますが、同様のオブジェクトが作成された場合のみ変更されます。それは驚くべきことではありません。

不変性を強調する言語では、オブジェクトが決して変更されないという保証があるので、オプション2が可能です。