teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

自作クラスでequalsを使う際の注意

2016/05/24 01:33

投稿

swordone
swordone

スコア20675

answer CHANGED
@@ -1,3 +1,3 @@
1
1
  プリミティブ型(byte,short,int,long,float,double,char,boolean)にequalsは使えません(そもそもメソッドというものを持たない)。==を使っての比較になります。
2
2
  Javaにおいてはその他はすべて参照型になります。プリミティブ値の配列も参照型です。==を使った場合、「両辺の参照型変数が参照しているオブジェクトが同じものである場合」のみtrueを返します。Stringの表す文字列が同じものでも、参照しているオブジェクトが異なる場合はfalseになります。(参照:[文字列と文字列の比較](http://www.javadrive.jp/start/string/index4.html))
3
- 参照型の中身が等しいかどうかを判定する場合はequalsメソッドを使います。
3
+ 参照型の中身が等しいかどうかを判定する場合はequalsメソッドを使います。ただし、equalsの判定はデフォルトでは==での比較と全く同じです。Stringなどの場合、適切に中身が等しいことを判定できるようにequalsメソッドをオーバーライドしています。自作クラスでequalsを使って比較したい場合、equalsメソッドを適切にオーバーライドする必要があります。