compareTo() と equals() 質問する

compareTo() と equals() 質問する

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) == 0NullPointerException をスローすることです。したがって、文字列の場合でも、必ずしも互換性があるわけではありません。

おすすめ記事