String(dize) bir karakter dizisidir. Java’da yaygın olarak kullanılan bir veri türüdür, bu nedenle dizelerin karşılaştırılması en çok kullanılan Java işlemlerinden biridir. Ancak, geliştiriciler çoğu zaman bu işlemle baş edemezler. Bu sorunla başa çıkmaya çalışıyorsanız, doğru yerdesiniz! Bu yazıda Java’daki dizeleri karşılaştırmanın farklı yollarını sunacağız.
String Sınıfı ile String Karşılaştırması
Bu yöntem, Java’daki dizeleri karşılaştırmanın beş farklı yolunu önerir. Her birini dikkate alacağız.
“==” Karşılaştırma İşlecini Kullanma
Uyarı: “==” operatörü değerleri değil, yalnızca referansları karşılaştırır. Bu, metin değerlerini karşılaştırmanın yanlış bir yoludur. Bir örnek görelim:
Örnek:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | public class JavaOrnekleri { public static void main(String []args) {//www.tasarimkodlama.com String string1 = "Karşılaştırma Operatörü Kullanma"; String string2 = "Karşılaştırma Operatörü Kullanma"; String string3 = new String("Karşılaştırma Operatörü Kullanma"); if(string1==string2) System.out.println("string1 string2 ile eşit"); else System.out.println("string1 string2 ile eşit değil"); if(string1==string3) System.out.println("string1 string3 ile eşit"); else System.out.println("string1 string3 ile eşit değil"); } } |
Çıktı:
1 2 3 4 | string1 string2 ile eşit string1 string3 ile eşit değil |
Gördüğünüz gibi, iki değişken aynı dize değişmezine işaret ediyor, bu nedenle ilk onaylama doğru, ancak ikinci onaylama yanlıştır, çünkü string1 bir değişmezle oluşturulur ve string3 new operatörü ile oluşturulur; farklı nesneler.
equals() Kullanma
Bu yöntem, içeriklerine göre iki dizeyi karşılaştırır. Adreslerini görmezden gelen karaktere göre bir karşılaştırma. İki dize aynı uzunlukta ve karakterler aynı sıradaysa, bunları eşit kabul eder ve true değerini döndürür. Karakterler eşleşmezse false değerini döndürür.
String sınıfı iki yöntem kullanır
public boolean equals(Başka bir nesne) bu dizeyi belirtilen nesneyle karşılaştırır.
public boolean equalsIgnoreCase(Başka bir String) bu dizeyi başka bir dizeyle karşılaştırır ve büyük / küçük harf durumunu dikkate almaz.
Sözdizimi:
1 2 3 | str1.equals(str2); |
Örnek:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | public class JavaOrnekleri { public static void main(String []args) {//www.tasarimkodlama.com String string1 = "Karşılaştırma Operatörü Kullanma"; String string2 = "Karşılaştırma Operatörü Kullanma"; String string3 = new String("Karşılaştırma Operatörü Kullanma"); if(string1.equals(string2)) System.out.println("string1 string2 ile eşit"); else System.out.println("string1 string2 ile eşit değil"); if(string1.equals(string3)) System.out.println("string1 string3 ile eşit"); else System.out.println("string1 string3 ile eşit değil"); } } |
Çıktı:
1 2 3 4 | string1 string2 ile eşit string1 string3 ile eşit |
Bu örnekte, string1, string2 ve string3 değişkenleri eşittir çünkü adreslerinden bağımsız olarak aynı durum ve değere sahiptirler.
String3 için yöntem, büyük / küçük harfe duyarlı olduğu için false değerini döndürür.
Ayrıca, iki dizeden herhangi biri boşsa, yöntem false değerini döndürür.
Şimdi aldığınızdan emin olmak için başka bir örneğe bakalım.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | public class JavaOrnekleri {//www.tasarimkodlama.com public static void main(String []args) { String renk1 = new String("Koyu"); String renk2 = new String("Koyu"); if(renk1.equals(renk2)) System.out.println("Eşit"); else System.out.println("Eşit Değil"); } } |
Çıktı:
1 2 3 | Eşit |
equalsIgnoreCase() Kullanma
Yukarıda belirtildiği gibi, bir boolean değeri döndüren başka bir yöntem daha vardır. Bu yöntem, Dizeleri karşılaştırırken karakterlerin durumunu dikkate almaz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | public class JavaOrnekleri { public static void main(String []args) {//www.tasarimkodlama.com String renk1 = new String("Koyu"); String renk2 = new String("KOYU"); if(renk1.equalsIgnoreCase(renk2)) System.out.println("Eşit"); else System.out.println("Eşit Değil"); } } |
Çıktı:
1 2 3 | Eşit |
compareTo() Kullanımı
Bu yöntem, sözlük veya doğal sıralamaya göre iki dizenin karakterlerini sözlükbilimsel olarak karşılaştırır. İlk dizenin ikinci dizeden küçük, eşit veya büyük olduğunu açıklayan bir tamsayı değeri döndürür.
et’in dize1 ve dize2’nin iki farklı değişken olduğunu hayal edin. Üç olası senaryo vardır:
- string1 == string2: 0
- string1 > string2: pozitif değer
- string1 <string2: negatif değer
Sözdizimi:
1 2 3 | int str1.compareTo(String str2) |
Örnek:
1 2 3 4 5 6 7 8 9 10 11 12 | public class JavaOrnekleri { public static void main(String []args) { String renk1 = new String("Koyu"); String renk2 = new String("KOYU"); System.out.println(renk1.compareTo(renk2)); //pozitif değer dönecek } } |
1 2 3 4 5 6 7 8 9 10 11 12 | public class JavaOrnekleri { public static void main(String []args) { String renk1 = new String("Koyu Renk"); String renk2 = new String("KOYU"); System.out.println(renk1.compareTo(renk2)); //pozitif değer dönecek } } |
1 2 3 4 5 6 7 8 9 10 11 12 | public class JavaOrnekleri { public static void main(String []args) { String renk1 = new String("Bir Koyu Renk"); String renk2 = new String("KOYU"); System.out.println(renk1.compareTo(renk2)); //negatif değer dönecek } } |
Nesne Sınıfı ile Dize Karşılaştırması
Objects bir yardımcı program sınıfı equals() yöntemi içerir. İki dizeyi karşılaştırmak da aynı derecede faydalı olabilir.
Bu yöntem ilk olarak iki dizeyi adreslerine göre karşılaştırır ve aynıysa true değerini döndürür. Her iki argüman da null olursa, true değerini döndürür, ancak bir argüman null olursa false değerini döndürür. Dize sınıfının equals() yöntemini dahili olarak çağırdığı için büyük / küçük harfe duyarlı bir yöntemdir.
Bir örnekle kontrol edelim.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import java.util.Objects; public class JavaOrnekleri { public static void main(String []args) { String renk1 = new String("Koyu"); String renk2 = new String("Koyu"); System.out.println(Objects.equals(renk1, renk2)); } } |
Çıktı:
1 2 3 | true |
Apache Commons Kütüphanesi ile String Karşılaştırma
Apache Commons kütüphanesi, String yardımcı programları olarak adlandırılan ve string karşılaştırması için yararlı yöntemler sağlayan dizeyle ilgili işlemler için bir yardımcı program sınıfı içerir. Haydi bakalım.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import com.sun.xml.internal.ws.util.StringUtils; public class JavaOrnekleri { public static void main(String []args) { String renk1 = new String("Koyu"); String renk2 = new String("Koyu"); System.out.println(StringUtils.capitalize(renk1).equals(renk2)); } } |
Yorum Yap