Java での等価性をテストする場合、String
私は常に を使用しています。equals()
これは、私にとってこれが最も自然な方法であるように思われるからです。結局のところ、 の名前がすでに意図していることを物語っています。しかし、最近同僚から のcompareTo() == 0
代わりにを使用するように教わったと聞きましたequals()
。これは不自然に感じます ( はcompareTo()
順序付けを提供することを意図しており、等価性を比較するものではないため)。また、の場合は等価性を意味することはわかっていますcompareTo() == 0
が、必ずしもすべての場合に等価性を意味するわけではないため、String
私にとっては多少危険ですらあります。
彼は、なぜfor 'scompareTo()
ではなく insteadを使うように教えられたのか知りませんでしたし、私もその理由を見つけることができませんでした。これは本当に個人的な好みの問題なのでしょうか、それともどちらの方法にも何か本当の理由があるのでしょうか?equals()
String
ベストアンサー1
違いは、 が"foo".equals((String)null)
false を返すのに対し、 が"foo".compareTo((String)null) == 0
NullPointerException をスローすることです。したがって、文字列の場合でも、必ずしも互換性があるわけではありません。