bekkou68 の日記

Gogengo! や IT 技術など。

equals と == の違い - Diff. of equals & ==

次は、equals と == の違いについてです。

Next is about difference between equals and ==.

equals は、オブジェクトの実体が等しいかを比較します。

equals compares whether entities of object are same or not.

== は、変数の値が同じものかを比較します。

== compares whether value of variable are same or not.


Now, I'll list instance.

public class EqualsAndEqualOperationTest {

    public static void main(String args[]) {


            /* 擬似プリミティブ型 */

            String primStr1 = "primStr";

            String primStr2 = "primStr";

            System.out.println(primStr1.equals(primStr2)); /* I */

            System.out.println(primStr1 == primStr2); /* II */



            /* オブジェクト */

            String objStr1 = new String("objStr");

            String objStr2 = new String("objStr");

            System.out.println(objStr1.equals(objStr2)); /* III */

            System.out.println(objStr1 == objStr2); /* IV */



            /* 擬似プリミティブ型 + オブジェクト */

            String primStr = "str";

            String objStr = new String("str");

            System.out.println(primStr.equals(objStr)); /* V */

            System.out.println(primStr == objStr); /* VI */




I, III: true

equals は、Stringオブジェクトの実体である文字順序が等しいかを比較します。

equals compares that entity of String object; order of characters are same or not.

擬似プリミティブ型同士とオブジェクト同士、どちらの比較においても文字順序は同じなので、true が返るというわけです。

Comparing pseudo-primitive forms among and objects among, we can realize string orders in both of case are same, so it returns true.


Please refer to the following URL about pseudo-primitive form.

II: true

変数 primStr1 と primStr2 は同じ文字列なので、同じオブジェクト参照IDが入っています。

The variables of primStr1 and primSt2 are same string, so same object reference IDs in them.

それぞれの変数の値が同じなので、== で比較をすると true が返るというわけです。

Each value of variables are same, therefore it returns true by comparing ==.

IV: false

変数 objStr1 と objStr2 は同じ文字列ですが、new 演算子を用いて別インスタンスを生成しているので、違うオブジェクト参照IDが入っています。

The variables of objStr1 and objStr2 are same string, but different object reference IDs in them.  Because we generate another instance by using new operation.

それぞれの変数の値が違うので、== で比較をすると false が返るというわけです。

Because they have different variables each other, it returns false.


Samely thinking, we can answer as the following.

V: true

VI: false


Deep world.