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.
擬似プリミティブ型については下記URLをご参照下さい。
Please refer to the following URL about pseudo-primitive form.
http://msugai.fc2web.com/java/String.html
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.