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

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

 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-2024 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop