Java’da String Nesnelerini KarşılaÅŸtırma

____________________________________________________________________

Java programlama dilinde birçok yerde String nesnelerini karşılaştırmamız (String comparison) gerekir. String nesnelerinin karşılaştırılması için Java dilinde çeşitli metotlar vardır.

public boolean equals(String str)

İlk metodumuz equals() metodu. Bu metodun kullanımı şöyle olur;
if(str.equals(“abc”)){}
Bu örnekte str bir referanstır ve eÄŸer “abc” strnin deÄŸerine eÅŸit ise metot bir boolean deÄŸeri olan true döner. Sonrasında da buna dayanarak istediÄŸimizi yaptırabiliriz. Ayrıca karşılaÅŸtırılacak metinlerdeki büyük küçük harf farkları önemli deÄŸilse equalsIgnoreCase() metodunu da kullanabiliriz.

public Int compareTo(String str)

DiÄŸer metodumuz olan compareTo(),  equals() metoduna göre biraz daha geliÅŸmiÅŸtir. Çünkü kelimeleri sadece eÅŸit olup olmadıkları ile deÄŸil, sözlük sıralamalarına göre de karşılaÅŸtırabilir ve aralarındaki farkı + veya – deÄŸerde bir sayı yani Integer olarak dönebilir. Bu metotta karşılaÅŸtırma iki metindeki yazıların Unicode deÄŸeri ile yapılır.
Burada kelimelerin sözlük sıralamaları önemlidir. Eğer bir kelime sözlükte diğer bir kelimeden önce geliyorsa o sözcükten küçüktür ve eğer sonra geliyorsa da o sözcükten büyüktür.

  • EÄŸer karşılaÅŸtırma sonucunda iki deÄŸer birbirine eÅŸitse 0 sayısı döner.
  • EÄŸer ilk String diÄŸerinden büyükse 0’dan büyük bir deÄŸer döner.
  • EÄŸer ilk String diÄŸerinden küçükse 0’dan küçük bir deÄŸer döner.

Sonucun Int dönmesi bize kelimeleri sözlük sıralamasına göre karşılaştırmada kolaylık sağlar.
Eğer karşılaştırılan iki değerinde birbirine eşit olup olmadığı merak ediliyorsa metot bu şekilde kullanılır.
if(str.compareTo(“abc”) == 0) {}
Sözlük sıralamasına göre bir değerin küçük olup olmadığına bakmak için metodu şu şekilde kullanabliriz.
if(str.compareTo(“abc”) < 0) {}
Burada eÄŸer str “abc” metninden küçükse 0 döneceÄŸinden strnin daha küçük bir String nesnesi anlarız.
Eğer iki değerin diğerine eşit veya küçük olduğu merak ediliyorsa <= ile bunu kontrol edebiliriz. Sonuç sayı şeklinde döndüğünden bunu farklı şekillerde çok farklı amaçlarla kullanabiliriz.
Bu yöntemde iki String nesnesi de birbirine göre uzunluk, sözlük sıralaması ve küçük büyük harflerine göre karşılaştırılır. Eğer küçük büyük harflere göre karşılaştırma istemiyorsak compareToIgnoreCase metodunu kullanırız.,

public boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len)

Bu yöntemle bir değeri diğerinin içinde belli bir bölgede ararız. Bu metosun kullanımı şöyledir;
public boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len)
ignoreCase true ise harflerin büyük küçük olduğuna bakılmaz.
toffset karşılaştırmanın başlayacağı indekstir.
other yerine karşılaştırması yapılacak ikinci String nesnesi girilir.
oofset, other nesnesinin başlangıç indeksini belirtir,
len ile de karşılaştırmanın kaç karakterde yapılacağı belirtilir.

Bu metodu şöyle kullanabiliriz;
if(deger1.regionMatches(true, 0, deger2, 0, deger1.length()))
Bunun manası şudur;
Karşılaştırmada büyük küçük harf farklarına bakılmaz.
deger1 nesnesinin 0 indeksinden yani ilk harfinden karşılaştırma başlar.
deger1 ile karşılaÅŸtırılack olan nesne deger2’dir.
deger2’de karşılaÅŸtırılacak kısmın indeksi 0’dan baÅŸlar.
KarşılaÅŸtırılacak karakterlerin uzunluÄŸu deger1’in uzunluÄŸuna eÅŸittir.

public boolean startsWith(String str)

startsWith() metodu ile bir String nesnesinin belirtilen bir metinle başlayıp başlamadığı kontrol edilir. Sonuç true veya false olur. Bunu iki şekilde yapabiliriz.
Ör 1;
public boolean startsWith(String önek)
if(deger1.startsWith(“abc”)) {}
Burada eÄŸer deger1 “abc” ile baÅŸlıyorsa metot true döner.
Ör 2;
public boolean startsWith(String önek, Int indeks) //indeks karşılaştırmanın başlayacağı indekstir.
if(deger1.startsWith(“abc”, 1) {}
Burada deger1 “abc” metninin birinci indeksinden sonrası ile baÅŸlıyorsa yani ikinci harften baÅŸlıyorsa (“bc”) metot true döner.

public boolean endsWith()
Bu metot ise startsWith() metosunun zıttı yönde karşılaştırma yapar, yani eğer bir nesne belirtilen nesne ile bitiyorsa true döner.
if(“alfabe”.endsWith(“be”)){//Bu metos true döner}

public int indexOf(String str)

Bu metot karşılaştırmayı nesne içinde argümanımızı arayarak yapar ve eğer nesnenin içinde argüman nesnemiz varsa bulduğu ilk uyan kısmın başlangıç indeksini Int olarak döner.
Ör; Int indeks = “yemek”.indexOf(“e”);indeks burada 1 olarak dönecektir.
Metot sadece argümanımızın ilk indeksini döner, birden fazla ise diğerlerini dönmez. İkinci indeksi de
indexOf(String str, int baslamaIndeksi) şeklinde bir kullanımla bulabiliriz. Burada baslamaIndeksi yerine aramanın başlaması istenen indeks değeri yazılır. Bunu baslamaIndeksi = indeks + argümanın uzunluğu şeklinde yaparsak metdo argümanımızın nesne içindeki sonraki konumunu dönecektir.
Metodun güzel bir yanı istediğimiz bir metnin diğer bir metin içinde herhangi bir yerde olup olmadığını kontrol edebilmemizdir. Bu metot ile aradığımız metnin diğerinin başında veya sonunda olması veya konumunu belirtmemiz gerekmez. Bunu yapabilmemizi sağlayan şey metodun sonucunun bir Int dönmesidir. Metnimiz içinde argüman olarak belirttiğimiz metin yok ise bu metot Int değeri olarak -1 döner.

public int lastIndexOf(String str)

Bu metot ile de indexOf() metodunun tersi yönde argümanımızın nesnemiz içindeki son indeksini alırız. lastIndexOf(String str, int baslamaIndeksi) şeklinde kullanarak da aramanın nerede başlayacağını belirtiriz.

Bunlardan başka bir de şu kullanım da vardır;
if(str 1 == str2) {}
Burada eÄŸer str1 ve str2 aynı nesne ise true döner, deÄŸerleri farklı (Ör; str1 = “ab”, str2 = “a” + “b”)ise false döner.
equals() metodunda ise nesneler farklı olabilir ama değerleri aynı ise true döner.

Bunlar Java programlama dilinde kullanabileceÄŸimiz genel String karşılaÅŸtırma metodlarıdır. Java sınıflamasına göre (, , J2EE veya Java ME, Java SE, Java EE gibi) bunlardan baÅŸka metodlarda var olabilir veya yeni sürümlerde olacaktır ama ben genelde en çok kullanılanları olduÄŸu için bunlarla yetindim. Bunları kullanarak Java ile birçok ÅŸey yapmak mümkün, bir sözlük uygulaması, bir smiley kodu bulunduÄŸunda yerine bir grafik simge koyacak bir anlık ileti programı…

Özetle, compareTo() metodu ile String nesneleri sözlük sıralamalarına göre artı veya eksi Int döner. equals() ise sadece iki değer birbirine eşitse true döndüğünden basit karşılaştırma işlemlerinde (sözlük sıralaması ile ilgili durumlar hariç) compareTo yerine kullanımı, daha performanslı olabilir. regionMatches(), startsWith() ve endsWith() metodları da argümanımızın belirttiğimiz yerde olup olmadığını kontrol ederken, indexOf() argümanımızın ilk indeksini ve lastIndexOf() da son indeksini döner. Bunlar da birbirleriyle ilişki içinde çok farklı şekillerde kullanılabilirler.