HOME»基本情報技術者試験掲示板»30年度春期午後問11(Java)設問4について質
投稿する

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

 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日経過したスレッドへの投稿はできません。
© 2010- 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop