質問: new person(2,"あ"); p1.show(); p2.show(); こうすると出力結果が 1ああ 2あ になるはずですが、(わかりずらいですが、)自分の中ではnew演算子が呼ばれたときに?が呼ばれて、変数に値が入ります。そして次のnew演算子で?が呼ばれて値が上書きされるので2あ 2あ になると思うのですが。それともp1.show();の時点でもう一回コンストラクタが呼ばれているのでしょうか。要は上書きされるのか、showの時にコンストラクタが呼ばれ、その値で出力されるのか、です。
回答: > 要は上書きされるのか、showの時にコンストラクタが呼ばれ、その値で出力されるのか、です。 ・p1とp2は別物だから、上書きされることは無い。 ・show()の時に、コンストラクタは呼び出しているわけではない。 デバッガを使って、インスタンスのアドレスが具体的にどんな値をとってるかをプログラムを動かしながら調べては。 抽象的に考えて分からないときは、手を動かしてみるのが、理解への早道。