0
if(new Integer(1) == new Integer(1)) return true;

このテストが次のようになるように、これをコーディング/実装する必要があります。

//door is a class and the constructor takes length, breadth, width
if(new Door(10,10,10) == new Door(10,10,10))

true を返します。

Java コンパイラには、ラッパー クラスが値を取得して比較するためのインターフェイスがありますか?

または簡単に:どのようにそれをチェックしますかsome object > other object(ユーザー定義オブジェクトですが、プリミティブ値/ラッパークラスではありません)?

4

2 に答える 2

15

Java では動作しません:

if (new Integer(1) == new Integer(1)) {
    System.out.println("This will not be printed.");
}

小さな値のオブジェクトを再利用するオートボクシングと混同している可能性があります (正確な範囲は実装固有です - JLS セクション 5.1.7の下部を参照してください)。

Integer x = 1;
Integer y = 1;
if (x == y) { // Still performing reference equality check
    System.out.println("This will be printed");
}

new演算子は常に新しいオブジェクトへの参照を返すため、常にに評価されnew ... == new ...ます。false

Java で演算子をオーバーロードすることはできません。通常は等値比較に使用しequals(独自のクラスでオーバーライドおよびオーバーロードできます)、Comparable<T>順序付けのために実装してから、 を使用しますcompareTo

于 2013-05-25T08:21:39.100 に答える
2

==「オブジェクトの値」自体ではなく、「オブジェクトの参照」の値を比較します。

これは、Java で比較がどのように機能するか、また必要なものを実装する方法を明確にするのに役立つ優れたリファレンスです。

于 2013-05-25T08:27:50.980 に答える