Java Programming

Java’da String Karşılaştırması: Kapsamlı Bir Kılavuz

Spread the love

Java, dizeleri karşılaştırmak için her birinin kendine özgü güçlü ve zayıf yönleri olan çeşitli yöntemler sunar. En iyi yöntem, büyük/küçük harfe duyarlı bir karşılaştırmaya mı ihtiyacınız olduğuna, eşitliği mi kontrol ettiğinize yoksa alfabetik sırayı mı belirlemeniz gerektiğine bağlıdır. Bu kılavuz, en yaygın yaklaşımları açıklığa kavuşturmaktadır.

İçindekiler

  1. compareTo() Metodunun Kullanımı
  2. == Operatörü
  3. equals() Metodu
  4. Büyük/Küçük Harf Duyarlılığı ve equalsIgnoreCase()
  5. contentEquals() Metodu

1. compareTo() ile Dizeleri Karşılaştırma

compareTo() metodu, alfabetik bir karşılaştırma sunar. Şunları döndürür:

  • 0: Dizeler eşitse.
  • Negatif bir değer: Çağrılan dize, argüman dizisinden alfabetik olarak önce geliyorsa.
  • Pozitif bir değer: Çağrılan dize, argüman dizisinden alfabetik olarak sonra geliyorsa.

Bu karşılaştırma büyük/küçük harfe duyarlıdır; büyük harfler küçük harflerden önce gelir.


String str1 = "apple";
String str2 = "banana";
String str3 = "Apple";

int result1 = str1.compareTo(str2); // result1 negatif olacaktır
int result2 = str1.compareTo(str3); // result2 negatif olacaktır (büyük/küçük harfe duyarlı)
int result3 = str1.compareTo("apple"); // result3 0 olacaktır

2. == Operatörü

== operatörü, dize içeriğini değil, referansları karşılaştırır. İki dize değişkeninin aynı bellek konumunu işaret edip etmediğini kontrol eder. Bu, genellikle dize değerlerini karşılaştırmak için istenen davranış değildir.


String str1 = "hello";
String str2 = "hello";
String str3 = new String("hello");

System.out.println(str1 == str2); // Java'nın dize birleştirme özelliği nedeniyle genellikle doğru
System.out.println(str1 == str3); // yanlış (farklı nesneler)

str1 == str2, Java’nın dize birleştirme özelliği nedeniyle genellikle true döndürse de, buna güvenmek güvenilir değildir. Her zaman içerik karşılaştırma için equals() kullanın.

3. equals() Metodu

equals() metodu, dize içeriğini karşılaştırmak için önerilen yaklaşımdır. Bellek konumlarını dikkate almadan karakterleri karşılaştırır.


String str1 = "hello";
String str2 = "hello";
String str3 = new String("hello");

System.out.println(str1.equals(str2)); // doğru
System.out.println(str1.equals(str3)); // doğru

4. Büyük/Küçük Harf Duyarlılığı ve equalsIgnoreCase()

equals() büyük/küçük harfe duyarlıdır. “hello” ve “Hello” farklı olarak kabul edilir. Büyük/küçük harfe duyarsız karşılaştırma için equalsIgnoreCase() kullanın.


String str1 = "hello";
String str2 = "Hello";

System.out.println(str1.equals(str2)); // yanlış
System.out.println(str1.equalsIgnoreCase(str2)); // doğru

5. contentEquals() Metodu

contentEquals(), equals()‘a benzer, ancak bir String’i diğer CharSequence nesneleriyle (StringBuffer veya StringBuilder gibi) karşılaştırmaya olanak tanır.


String str1 = "hello";
StringBuffer str2 = new StringBuffer("hello");

System.out.println(str1.contentEquals(str2)); // doğru

Bu esneklik sunar, ancak basit dize-dize karşılaştırmaları için, okunabilirlik için equals() tercih edilir.

Özetle, ihtiyacınıza göre uygun yöntemi seçin: alfabetik sıra için compareTo(), büyük/küçük harfe duyarlı içerik eşitliği için equals(), büyük/küçük harfe duyarsız eşitlik için equalsIgnoreCase() ve dizeleri diğer CharSequence nesneleriyle karşılaştırmak için contentEquals(). Dize içeriğini karşılaştırmak için == kullanmaktan kaçının.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir