İki Dize nasıl karşılaştırılır Java

⚡ Akıllı Özet

İki dizeyi karşılaştırma Java Karakter dizilerini eşitlik veya sıralama açısından eşleştiren çeşitli yöntemlerle bu işlem yapılabilir. Bu kaynak, String equals, Objects equals, compareTo, StringUtils yöntemleri, == operatörü ve özel bir karşılaştırma yöntemi de dahil olmak üzere yedi yaklaşımı örneklerle açıklamaktadır.

  • 🟰 Dize eşittir(): İki dize değerini büyük/küçük harf duyarlılığına göre eşitlik açısından karşılaştırır ve true veya false döndürür.
  • ???? Nesneler eşittir(): İki boş değeri eşit kabul ederek iki dizeyi güvenli bir şekilde karşılaştırır.
  • 🔤 compareTo(): Dizeleri sözlük sırasına göre karşılaştırır ve sıfır, negatif veya pozitif bir sayı döndürür.
  • 🧰 StringUtils yöntemleri: Apache Commons'tan equals() ve equalsAny() fonksiyonları, dizeleri karşılaştırır ve boş değerleri sorunsuz bir şekilde ele alır.
  • ⚠️ == Operator: Nesne referanslarını karşılaştırır, içeriklerini değil; bu nedenle değer karşılaştırması için kullanılmamalıdır.

İki Dize nasıl karşılaştırılır Java

Dizelerin Karşılaştırılması Yöntemleri Java

Java iki dizeyi karşılaştırmak için kullanabileceğiniz farklı yöntemler sağlar Java. Dize karşılaştırması Java bir karakter dizisini bir dizeyle eşleştiren bir özelliktir.

Dizelerin nasıl karşılaştırılacağını öğrenmek için JavaAşağıdaki sınıfların sağladığı yöntemleri kullanabilirsiniz:

  • Java.lang paketindeki String sınıfı.
  • Java.util paketindeki Objects sınıfı.
  • org.Apache.commons.lang3 paketindeki StringUtils sınıfı.

Bunların çoğu Java `compare-strings` yöntemleri, büyük/küçük harf duyarlılığını göz ardı etme çözümlerine sahiptir. Bu eğitimde, iki dizeyi karşılaştırmak için kullanabileceğiniz farklı yöntemleri öğreneceksiniz.

Yöntem 1: String equals() yöntemi

MKS Java dizi eşittir() yöntemi iki dize nesnesini eşit dize değerleri açısından karşılaştırır.

Sözdizimi:

public boolean equals(Object anObject)

equals() yöntemi parametreleri:

anObject – Dizeleri karşılaştırmak için kullanılan bağımsız değişken dizesi.

equals() yöntemi dönüş türleri

  • Sağlanan dize değişmezi ilk dizeyle aynıysa true değerini döndürür.
  • İlk dize argüman dizesiyle aynı değilse false değerini döndürür.

Örnek:

public class CompareTwoStrings {
 public static void main(String[] args) {
   String stringOne = "Guru99";
   String stringTwo = "Guru99";
   System.out.println("is Guru99 equal to Guru99: "+stringOne.equals(stringTwo));
   String stringThree = "GURU99";
   System.out.println("is Guru99 equal to GURU99: "+stringOne.equals(stringThree));
  }
}

Beklenen çıktı:

is Guru99 equal to Guru99: true
is Guru99 equal to GURU99: false

Açıklama:

  • Belirtilen nesnenin durumu farklı olduğundan son çıktıda false hatası aldınız.

Not: Büyük/küçük harf duyarlılığına sahip dizeleri karşılaştırmak için `equals()` yöntemini kullanın. Büyük/küçük harf duyarlılığını göz ardı ederek dize nesnelerini karşılaştırmak için `equalsIgnoreCase` yöntemini kullanın.

Yöntem 2: Objects equals() yöntemi

MKS Java Nesneler eşittir() metodu, aynı değerlere sahip olup olmadıklarını bulmak için iki dize nesnesini karşılaştırır.

Sözdizimi:

public static boolean equals(Object a, Object b)

equals() yöntemi parametreleri

a – İlk dize nesnesi için bağımsız değişken dizesi.

b – İkinci dize nesnesi için bağımsız değişken dizesi.

equals() yöntemi dönüş türleri

  • Dize değişmezleri eşitse true değerini döndürür. İki bağımsız değişkende boş bir değerin iletilmesi de doğru değerini döndürecektir.
  • Dize değişmezleri eşit değilse false değerini döndürür.

Örnek:

import java.util.Objects;
public class CompareTwoStrings {
    public static void main(String[] args) {
        String stringOne = "Guru99";
        String stringTwo = "Guru99";
        System.out.println("is Guru99 equal to Guru99: " + Objects.equals(stringOne, stringTwo));
        String stringThree = null;
        String stringFour = null;
        System.out.println("is Guru99 equal to Guru99: " + Objects.equals(stringThree, stringFour));
    }
}

Çıktı:

is Guru99 equal to Guru99: true
is Guru99 equal to Guru99: true

Açıklama:

Bu örnekten de görebileceğiniz gibi, karşılaştırılan dizeler eşit olduğundan çıktı, doğru (true) boolean değeridir.

Yöntem 3: String CompareTo() yöntemi

MKS Java Dize karşılaştırma() yöntem iki dizeyi alfabetik sırayla karşılaştırır. Genellikle leksikografik sıra olarak adlandırılır.

Sözdizimi:

public int compareTo(String str)

CompareTo() yöntem parametreleri

str – Geçerli dizeyle karşılaştırılacak dize.

CompareTo() yöntemi döndürür

  • 0 – Belirtilen nesne geçerli dizeye eşitse sıfırı döndürür.
  • < 0 – Bu dize belirtilen nesneden küçükse sıfırdan küçük bir sayı döndürür.
  • > 0 – Bu dize sağlanan dizeyi aşarsa sıfırdan büyük bir sayı döndürür.

Örnek:

public class CompareTwoStrings {
    public static void main(String[] args) {
        String stringOne = "Guru99";
        String stringTwo = "Guru99";
        System.out.println("is Guru99 equal to Guru99: " + stringOne.compareTo(stringTwo));
        String stringThree = "GURU99";
		// u = 117, U = 85, result = 117-85 = 32
        System.out.println("is Guru99 equal to GURU99: " + stringOne.compareTo(stringThree));
    }
}

Beklenen çıktı:

is Guru99 equal to Guru99: 0
is Guru99 equal to GURU99: 32

Açıklama:

İlk sonuç sıfır değerini döndürür, çünkü birinci ve ikinci dizeler eşittir.

İkinci sonuç, karakterler farklı olduğu için otuz iki değerini döndürür.

Not: Büyük/küçük harf duyarlılığını göz ardı etmek için “compareToIgnoreCase” yöntemini kullanabilirsiniz.

Yöntem 4: StringUtils equals() yöntemi

MKS Java StringUtils eşittir() yöntem iki karakter dizisinin eşitliğini karşılaştırır.

Programınıza “org.apache.commons.lang3” kütüphanesini eklediğinizden emin olun. Bu, StringUtils yöntemlerini kullanarak dizeleri karşılaştırmanıza olanak tanıyacaktır.

Maven projeleri için bunu kullanın rehberlik Kütüphaneyi projeye eklemek için.

Ancak, kütüphaneyi herhangi bir derleme aracı kullanmadan eklemek istiyorsanız, şunu kullanın. rehberlik.

Sözdizimi:

public static boolean equals(CharSequence cs1, CharSequence cs2)

StringUtils equals() yöntemi parametreleri

  • cs1 – İlk argüman için bir karakter dizisi.
  • cs2 – İkinci argüman için bir karakter dizisi.

StringUtils equals() yöntemi döndürür

  • Dizeler arası karşılaştırma eşitse true değerini döndürür. İki argümana da null değer girseniz bile geçerlidir.
  • Dize karşılaştırması eşit değilse false değerini döndürür.

Örnek:

import org.apache.commons.lang3.StringUtils;
public class CompareTwoStrings {
    public static void main(String[] args) {
        String stringOne = "Guru99";
        String stringTwo = "Guru99";
        System.out.println("is Guru99 equal to Guru99: " + StringUtils.equals(stringOne, stringTwo));
        String stringThree = "GURU99";
        System.out.println("is Guru99 equal to GURU99: " + StringUtils.equals(stringOne, stringThree));
    }
}

Çıktı:

is Guru99 equal to Guru99: true
is Guru99 equal to GURU99: false

Açıklama:

Birinci ve ikinci dizelerin içerikleri eşit olduğundan sonuç true değerini döndürür.

Büyük/küçük harf durumunu yok saymak için “equalsIgnoreCase” yöntemini kullanabilirsiniz.

Yöntem 5: StringUtils equalsAny() yöntemi

MKS Java StringUtils equalsAny() yöntem, argümanlarda bir dizenin olup olmadığını kontrol eder.

Sözdizimi:

public static boolean equalsAny(CharSequence string, CharSequence... searchStrings)

StringUtils equalsAny() yöntemi parametreleri

  • string – İlk bağımsız değişkenin dize değeri. Bağımsız değişken null değere de sahip olabilir.
  • searchStrings – Yöntemin, ilk bağımsız değişken dizesinin mevcut olup olmadığını bulmasına yönelik bir dizi dize bağımsız değişkeni.

StringUtils equalsAny() yöntemi döndürür

  • Aranan dizenin değişken sayıda arama dizesi arasında bulunup bulunmadığını kontrol eder ve varsa true değerini döndürür. Bu, her iki argüman da null olduğunda geçerlidir.
  • Eşleşecek dize, arama dizelerinin değişken sayısındaki herhangi bir dizeyle eşleşmezse false değerini döndürür.

Örnek:

import org.apache.commons.lang3.StringUtils;
public class CompareTwoStrings {
    public static void main(String[] args) {
        String stringOne = "Guru99";
        String[] stringTwo = new String[] {
            "Guru99",
            "JavaGuru99"
        };
        System.out.println("is Guru99 available: " +
            StringUtils.equalsAny(stringOne, stringTwo));
        String[] stringThree = new String[] {
            "GURU99",
            "JavaGuru99"
        };
        System.out.println("is GURU99 available: " +
            StringUtils.equalsAny(stringOne, stringThree));
    }
}

Çıktı:

is Guru99 available: true
is GURU99 available: false

Açıklama:

Birinci dizenin ve ikinci dizenin içerikleri eşit olduğundan sonuç true değerini döndürür. Büyük/küçük harf durumunu yok saymak için “equalsAnyIgnoreCase” yöntemini kullanabilirsiniz.

Yöntem 6: == operatörünü kullanma

Dizelerdeki == operatörü, nesne referanslarının aynı adrese sahip olup olmadığını kontrol eder.

Örnek:

public class CompareTwoStrings {
    public static void main(String[] args) {
        String stringOne = "Guru99";
        String stringTwo = "Guru99";
        System.out.println("is Guru99 == to Guru99: " + (stringOne == stringTwo));
        String stringThree = "GURU99";
        System.out.println("is Guru99 == to GURU99: " + (stringOne == stringThree));
    }
}

Beklenen çıktı:

is Guru99 == to Guru99: true
is Guru99 == to GURU99: false

Açıklama:

  • İlk sonuç true değerinde bir boolean değer döndürür. Aynı içeriğe sahip dizeler aynı dize havuzuna eklenir, bu nedenle dizeler tek bir adresi paylaşır.
  • İkinci sonuç, false boolean değeri döndürür. Nesnelerin farklı içerikleri vardır, bu da farklı dize havuzlarına yol açar. Bu, dizelerin ayrı nesne referanslarına sahip olduğu anlamına gelir; bu nedenle çıktı false'tur.

Yöntem 7: İki Dizeyi Karşılaştırmak için özel bir yöntem oluşturma Java

İki dizeyi leksikografik sırayı kullanarak karşılaştıran bir yöntem oluşturun.

Sözdizimi:

public static int compareTwoStrings(String str1, String str2)

Özel yöntem parametreleri

  • str1 – Karşılaştırılacak dize.
  • str2 – Karşılaştırılacak dize.

Özel yöntem getirileri

  • 0 – İlk dize ikinci dizeye eşitse sıfırı döndürür.
  • < 0 – İlk dize ikinci dizeden küçükse sıfırdan küçük bir sayı döndürür.
  • > 0 – İlk dize ikinci dizeden büyükse sıfırdan büyük bir sayı döndürür.

Örnek:

public class CompareTwoStrings {
    public static int compareTwoStrings(String stringOne, String stringTwo) {
        int lengthOfStringOne = stringOne.length();
        int lengthOfStringTwo = stringTwo.length();
        int minStringLength = Math.min(lengthOfStringOne, lengthOfStringTwo);
        for (int i = 0; i < minStringLength; i++) {
            char stringOneCharValue = stringOne.charAt(i);
            char stringTwoCharValue = stringTwo.charAt(i);
            if (stringOneCharValue != stringTwoCharValue) {
                return stringOneCharValue - stringTwoCharValue;
            }
        }
        if (lengthOfStringOne != lengthOfStringTwo) {
            return lengthOfStringOne - lengthOfStringTwo;
        } else {
            return 0;
        }
    }
    public static void main(String[] args) {
        String stringOne = "Guru99";
        String stringTwo = "Guru99";
        System.out.println("is Guru99 equal to Guru99: " + compareTwoStrings(stringOne, stringTwo));
    }
}

Beklenen çıktı:

is Guru99 equal to Guru99: 0

Açıklama:

Sonuç sıfır değeri döndürdü; bu, özel işlevin beklendiği gibi çalıştığı anlamına gelir.

SSS

Evet. Yapay zeka asistanları, amacınıza bağlı olarak equals, compareTo veya StringUtils gibi fonksiyonları önerebilir ve yaygın == hatasına dikkat çekebilir. Yine de, belirli verileriniz için testler yaparak seçiminizi doğrulamanız gerekir.

Evet. Yapay zeka araçları, içerik karşılaştırmasında == operatörünün yanlış kullanımını tespit eder ve bunun yerine equals veya equalsIgnoreCase operatörlerini önerir. Bu, dizelerle çalışan yeni başlayanlar için yaygın olan ince eşitlik hatalarını azaltmaya yardımcı olur.

== operatörü nesne referanslarını karşılaştırır, içerikleri değil. Aynı değere sahip iki dizenin farklı referansları olabilir, bu nedenle == yanlış sonuç döndürebilir. Güvenilir değer karşılaştırması için equals() fonksiyonunu kullanın.

`equals()` metodu büyük/küçük harf duyarlıdır, bu nedenle “Guru“99” ve “GURU99” eşit değildir. equalsIgnoreCase() yöntemi, büyük ve küçük harf farklılıklarını göz ardı ederek dizeleri karşılaştırır ve her ikisi için de true değerini döndürür.

Bu yazıyı şu şekilde özetleyin: