Benim gibi iseniz, Java'yı ilk kullanmaya başladığımda, iki = örneğinin eşit olup olmadığını test etmek için "==" operatörünü kullanmak istedim, ancak daha iyisi ya da daha kötüsü, Java'da bunu yapmanın doğru yolu değil.
Bu derste, çoğu zaman kullandığım yaklaşımdan başlayarak Java dizelerini doğru bir şekilde karşılaştırmanın birkaç farklı yolunu göstereceğim. Bu Java String karşılaştırma eğitiminin sonunda Java dizelerini karşılaştırırken "==" operatörünün neden çalışmadığını da tartışacağım.
Seçenek 1: eşittir yöntemi ile Java String karşılaştırma
Çoğu zaman (belki de% 95) Ben dizeleri Java String sınıfının eşittir yöntemi ile, şöyle:
if (string1.equals(string2))
Bu Dize eşittir yöntemi iki Java dizesine bakar ve tam olarak aynı karakter dizesini içeriyorsa, eşit kabul edilir.
Equals yöntemiyle hızlı bir String karşılaştırma örneğine bakıldığında, aşağıdaki sınama çalıştırıldıysa, karakterler tam olarak aynı olmadığı için iki dize eşit kabul edilmez (karakterlerin durumu farklıdır):
String string1 = "foo";
String string2 = "FOO";
if (string1.equals(string2))
{
// this line will not print because the
// java string equals method returns false:
System.out.println("The two strings are the same.")
}
Ancak, iki dize aynı karakter dizesini içerdiğinde, equals yöntemi bu örnekte olduğu gibi true değerini döndürür:
String string1 = "foo";
String string2 = "foo";
// test for equality with the java string equals method
if (string1.equals(string2))
{
// this line WILL print
System.out.println("The two strings are the same.")
}
Seçenek 2: equalsIgnoreCase yöntemiyle dize karşılaştırması
Bazı dize karşılaştırma testlerinde, dizelerin büyük veya küçük harf olup olmadığını göz ardı etmek istersiniz. Dizelerinizi bu büyük / küçük harfe duyarlı olmayan bir şekilde eşitlik açısından test etmek istediğinizde, String sınıfının equalsIgnoreCase yöntemini aşağıdaki gibi kullanın:
String string1 = "foo";
String string2 = "FOO";
// java string compare while ignoring case
if (string1.equalsIgnoreCase(string2))
{
// this line WILL print
System.out.println("Ignoring case, the two strings are the same.")
}
Seçenek 3: CompareTo yöntemiyle Java Dizesi karşılaştırması
Ayrıca Java dizelerini karşılaştırmak için üçüncü, daha az yaygın bir yol vardır ve bu String sınıfı CompareTo yöntemidir. İki dize tamamen aynıysa, CompareTo yöntemi 0 (sıfır) değerini döndürür. İşte bu Dize karşılaştırma yaklaşımının nasıl göründüğüne hızlı bir örnek:
String string1 = "foo bar";
String string2 = "foo bar";
// java string compare example
if (string1.compareTo(string2) == 0)
{
// this line WILL print
System.out.println("The two strings are the same.")
}
Java'da bu eşitlik kavramı hakkında yazarken, Java dilinin temel Java Nesne sınıfında eşittir bir yöntem içerdiğine dikkat etmek önemlidir. Kendi nesnelerinizi oluşturduğunuzda ve nesnenizin iki örneğinin "eşit" olup olmadığını görmek için bir araç sağlamak istediğinizde, sınıfınızdaki bu eşittir yöntemini geçersiz kılmalı (ve uygulamalısınız) (Java dilinin sağladığı gibi) Dize eşittir yöntemindeki bu eşitlik / karşılaştırma davranışı).
Bu ==, .equals (), CompareTo () ve Compare () ' a bakmak isteyebilirsiniz