==とequalsメソッドの違い 値が同じかどうかを見るにはequalsメソッドを使う

参照型変数にはデータそのものではなく、データの格納先(参照先)を示す値が入っています。

[参照記事] PHPでの==の意味

文字列の比較には通常、equalsメソッドを使うが、==による比較をおこなうと参照先が同じかどうかを判定する事ができます。
equalsメソッドの場合は、別々のメモリに同じ文字列が格納されていてもtrueになりますが、==ではfalseになります。

String a,b;
a="xxx";
b=a;
// 変数aとbは同じ参照先を指している。
System.out.println(a==b);           // true : 同じ参照先
System.out.println(a.equals(b));    // true : 同じ値

a="xxx";
b="xxx";
// 変数aとbは同じ参照先を指している。
System.out.println(a==b);           // true : 同じ参照先
System.out.println(a.equals(b));    // true : 同じ値

a="xxx";
b=new String("xxx");
// 変数aとbとは異なる参照先に同じ値が格納されている。
System.out.println(a==b);           // false: 参照先が異なる
System.out.println(a.equals(b));    // true : 同じ値

a=new String("xxx");
b=new String("xxx");
// 変数aとbとは異なる参照先に同じ値が格納されている。
System.out.println(a==b);           // false: 参照先が異なる
System.out.println(a.equals(b));    // true : 同じ値

a=new String("xxx");
b=a;
// 変数aとbは同じ参照先を指している。
System.out.println(a==b);           // true : 同じ参照先
System.out.println(a.equals(b));    // true : 同じ値

a="xxx";
b=a;
a="yyy";
// 変数aとbとは異なる参照先に異なる値が格納されている。
System.out.println(a==b);           // false: 参照先が異なる
System.out.println(a.equals(b));    // false: 異なる値
System.out.println(b);              // xxx  : bの値は変わらない


a=new String("xxx");
b=a;
a=new String("yyy");
// 変数aとbとは異なる参照先に異なる値が格納されている。
System.out.println(a==b);           // false: 参照先が異なる
System.out.println(a.equals(b));    // false: 異なる値
System.out.println(b);              // xxx  : bの値は変わらない

関連記事

スポンサーリンク

LENGTH関数 文字列長を求める

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る