30年度春期午後問11(Java)設問4について質

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
Java初心者さん  
(No.1)
設問4についてです。解説だとエがint型なのでコンパイルエラーになると記載がありますが、いまいち理解ができず困っています。また、そもそも同じものを比較してもfalseになるという場合があり得るというのが直感的に理解できません...
同一性と同値性に対する理解がそもそも甘いのかと思いますが、どなたか解説いただけるとありがたいです。
よろしくお願い致します。
2021.01.10 12:59
管理人 
(No.2)
まず「エ」がコンパイルエラーになる理由ですが、Object.equals()の引数はObject型である必要があるためです。Constant.evaluate()の戻り値はint型なので、引数の型が違うとしてコンパイルエラーとなります。

次に new Constant(9).equals(new Constant(9)) で作成される2つのConstant型のインスタンスは、保持する値は同じですが別のインスタンスです。Object.equals()は、同じインスタンスを参照する(x == yが true)場合にだけ true を返すので、上記式の結果は false となるわけです。

私自身Javaはそれほど詳しいわけではないので、もっとわかりやすく説明できる方がおられましたら、どうか追加の説明をよろしくお願い致します。
2021.01.10 14:19
Java初心者さん  
(No.3)
すっきりしました!!わかりやすい説明をありがとうございました!!
2021.01.10 17:09

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。

その他のスレッド


Pagetop