equals()
String nesneleri ile kullanıldığında mantıksal sonuç döndüren bir metin karşılaştırma metodudur. İki metnin tüm karakterlerini tek tek karşılaştırır ve eğer karşılaştırılan her karakter aynı sırada ve aynı değerde ise “true”, herhangi biri farklı ise “false” değerini döndürür. BÜYÜK/küçük harf duyarlıdır. equals metodu ‘a’ ve ‘A’ karakterlerini aynı kabul etmez.
equals metodu; üzerinde kullanıldığı String değişkenlerinin işaret ettiği nesnelerin verisini karşılaştırır. Yani tam olarak ilgili metinlerin birebir aynı olup olmaması ile ilgilenir. Örnek vermek gerekirse elimizde verileri “Tam Weblik!” olan iki ayrı String nesnesi olsun. Bu nesnelerden ilkini işaret eden nesne1inReferansi, ikincisini işaret eden de nesne2ninReferansi adında referans değişkenlerimiz olsun. Bu durumda farklı nesneler olmasına rağmen, verileri birebir aynı olduğundan nesne1inReferansi.equals(nesne2ninReferansi) metodu true değerini döndürecektir. (Örnek 1)
Aynı şekilde tek bir “Tam Weblik!” verisine sahip String nesnemiz varken, onu işaret eden iki ayrı referans değişken olabilir. Alttaki örnek kodlarda ref1 ve ref2 değişkenleri aynı nesneyi göstermektedir. Dolayısıyla ref1.equals(ref2) de true döndürecektir. (Örnek 2)
Elimizde biri “Tam Weblik!” diğeri “TAM WEBLİK!” olan iki metni karşılaştırdığımızda ise nesne3unReferansi.equals(nesne1inReferansi) false döndürecektir çünkü equals metodu büyük/küçük harflere duyarlıdır. (Örnek 3)
public class StringEqualsExample {
public static void main(String[] args) {
//Örnek 1
String nesne1inReferansi = new String("Tam Weblik!");
String nesne2ninReferansi = new String("Tam Weblik!");
System.out.println(nesne1inReferansi.equals(nesne2ninReferansi));
// Çıktısı: true
//Örnek 2
String ref1 = nesne1inReferansi;
String ref2 = nesne1inReferansi;
System.out.println(ref1.equals(ref2));
// Çıktısı: true
//Örnek 3
String nesne3unReferansi = new String("TAM WEBLİK!");
System.out.println(nesne3unReferansi.equals(nesne1inReferansi));
// Çıktısı: false
}
}
equalsIgnoreCase(); String nesneleri ile kullanılan ve mantıksal sonuç döndüren bir metin karşılaştırma metodudur. Equals metodundan farklı olarak, karşılaştırma öncesi tüm karakterleri küçük harfe çevirdiğinden BÜYÜK/küçük harf duyarlı DEĞİLDİR. Karşılaştırılan metinlerin her bir karakteri aynı ise “true”, değil ise “false” değer verir.
equalsIgnoreCase()
String nesneleri ile kullanıldığında mantıksal sonuç döndüren bir metin karşılaştırma metodudur. Equals metodundan farklı olarak, karşılaştırma öncesi tüm karakterleri küçük harfe çevirdiğinden BÜYÜK/küçük harf duyarlı DEĞİLDİR. Karşılaştırılan metinlerin her bir karakterinin küçük harf hali aynı ise “true”, değil ise “false” değer verir.
Alttaki kod örneklerinde görüleceği gibi metinlerin tüm karakterleri büyük/küçük harf farklılığına bakılmaksızın karşılaştırılır. ref1.equalsIgnoreCase(ref2) true döndürür çünkü her iki metnin tüm karakterleri boşluklar dahil olmak üzere sırasıyla aynıdır. (Örnek 1)
Boşluklar hariç tamamen aynı karakterleri içermesine rağmen ref1.equalsIgnoreCase(ref3) false değerini döndürmektedir çünkü karşılaştırma boşluklar da dahil tüm Unicode karakterler için geçerlidir.
public class StringEqualsIgnoreCaseExample {
public static void main(String[] args) {
//Örnek 1
String ref1 = "Tam Weblik Java!";
String ref2 = "TAM WEBLİK JAVA!";
System.out.println(ref1.equalsIgnoreCase(ref2));
// Çıktısı: true
//Örnek 2
String ref3 = "TamWeblik Java!";
System.out.println(ref1.equalsIgnoreCase(ref3));
// Çıktısı: false
}
}
Java String – Metinlerin Karşılaştırılması; equals() VS eşitlik operatörü (“==”)
Equals metodu işlev açısından “==” eşitlik operatörü ile karıştırılabilmektedir. Java String nesneleri üzerinde kullanılan equals metodunun nesnenin verisi ile ilgilendiğini yukarıda açıklamıştık. “==” operatörü ile yapılan karşılaştırmada ise durum biraz farklıdır. Şöyle ki; eşitlik operatörü karşılaştırması, ilgili değişkenlerin aynı nesneyi işaret edip etmediğini karşılaştırmaya yaramaktadır. Yani verileri birebir benzer karakterlerden oluşan iki ayrı string nesnesi, equals metodu kullanılarak karşılaştırıldığında true, “==” operatörü kullanılarak karşılaştırıldığında ise false değerini döndürecektir.
public class JavaStringEqualsVsEqualityOperator {
public static void main(String[] args) {
String ref1 = new String("Tam Weblik Java!");
String ref2 = new String("Tam Weblik Java!");
System.out.println(ref1.equals(ref2));
// Çıktısı: true
System.out.println(ref1 == ref2);
// Çıktısı: false
String ref3 = ref1;
System.out.println(ref1 == ref3);
// Çıktısı true;
}
}
Yukarıdaki örneklerde ayrı String nesneleri oluşturulurken new anahtar kelimesinin kullanıldığını gözden kaçırmamak gerekir. Eğer tanımlamalar new kullanmadan String ref1 = “Tam Weblik Java!”; ve String ref2 = “Tam Weblik Java!”; şeklinde yapılmış olsaydı, ref1 ve ref2 aynı nesneyi gösteren iki ayrı referans değişken olacaktı ve dolayısıyla (ref1 == ref2) karşılaştırması true değerini döndürecekti.
Konu ile ilgili düşüncelerinizi yorumlarda paylaşmanızı rica ederim. Herkese keyifli kodlamalar…