String
Java'da eşitliği test ederken her zaman kullandım equals()
çünkü bana göre bu en doğal yöntem gibi görünüyor. Sonuçta, adı zaten ne yapması gerektiğini söylüyor. Ancak, yakın zamanda bir meslektaşım bana compareTo() == 0
bunun yerine kullanmanın öğretildiğini söyledi equals()
. Bu bana doğal görünmüyor compareTo()
(eşitlik için bir sıralama sağlamak ve karşılaştırmak değil) ve hatta biraz tehlikeli (çünkü compareTo() == 0
her durumda eşitlik anlamına gelmiyor, bunun için olduğunu bilsem bile String
).
Diye kullanmaya öğretildi neden bilmiyordu compareTo()
yerine equals()
ilişkin String
'ler, ve ben de bir neden bulamadık. Bu gerçekten kişisel bir zevk meselesi mi, yoksa her iki yöntemin de gerçek bir nedeni var mı?
compareTo() == 0
her durumda eşitlik anlamına gelmez". Bu kesinlikle doğru! Java API belirtimlerinde, örneğin Karşılaştırılabilir sınıf belirtiminde "eşittir ile tutarlı" ifadesi tam olarak bu anlama gelir . Örneğin, String'in karşılaştırma yöntemi eşittir ile tutarlıdır, ancak BigDecimal'in karşılaştırma yöntemi eşittir ile tutarsızdır .
.equalsIgnoreCase()
uygunsa en hızlı karşılaştırmadır, aksi takdirde.equals()
istediğiniz şey budur.