現在、基本情報の勉強をしています。
そこでJavaで以下の問題ですが、疑問があります。
(オブジェクトの同一性チェックです)
一応JavaBronzeを保持していましたが、Javaは細かい部分を忘れてしまいました。
java
1public interface Expression { 2public int evaluate(); 3} 4
java
1public class Constant implements Expression { 2private final int value; 3 4public Constant (Expression value) { 5 this.value = value; 6 7public int evaluate() { return value; } 8 9public String toString() { return String, value0f (value); ) 10 11} 12 13}
この二つの二つのうち、オブジェクトの同一性を確認するらしく、正しくないものを選ぶとのことでした。
ア new Constant(9) == new Constant(9)
イ new Constant(9).equals(new Constant(9))
equalsはオーバーライドで特段のメソッドを作成しない場合は比較する二つのオブジェクトが全く同じ場合のみtrueを返すと記憶しています。
アの場合はなぜtrueになるのですか?
インスタンスを二つ生成している段階で、違うアドレスに生成されるので、同じとは思えないのですが、教えていただけると嬉しいです。
回答1件
あなたの回答
tips
プレビュー