1. Dizeleri karşılaştırma
Her şey yolunda. s1
Ancak ve s2
dizelerinin aslında aynı olduğunu, yani aynı metni içerdiklerini görebilirsiniz . String
Dizeleri karşılaştırırken, programa nesnelerin adreslerine değil içeriklerine bakmasını nasıl söylersiniz ?
Bu konuda bize yardımcı olması için, Java'nın String
sınıfının yöntemi vardır equals
. Aramak şöyle görünür:
string1.equals(string2)
Bu yöntem, true
dizeler aynıysa ve false
aynı değilse döndürür.
Örnek:
kod | Not |
---|---|
|
|
Daha fazla örnek:
kod | Açıklama |
---|---|
|
false |
|
true |
|
true |
|
true |
2. Büyük/küçük harf duyarlı olmayan dize karşılaştırması
Son örnekte , karşılaştırmanın . Gerçekten de, dizeler eşit değildir. Ancak..."Hello".equals("HELLO")
false
Açıkçası, dizeler eşit değildir. Bununla birlikte, içerikleri aynı harflere sahiptir ve yalnızca harflerin durumuna göre farklılık gösterir. Bunları karşılaştırmanın ve harflerin durumunu göz ardı etmenin bir yolu var mı? Yani, bu verim ?"Hello".equals("HELLO")
true
Ve bu sorunun cevabı evet. Java'da türün String
başka bir özel yöntemi vardır: equalsIgnoreCase
. Aramak şöyle görünür:
string1.equalsIgnoreCase(string2)
Metodun adı kabaca şu şekilde tercüme edilir: Compare but ignore case . Yöntemin adındaki harfler iki dikey çizgi içerir: ilki küçük harf L
ve ikincisi büyük harftir i
. Bunun kafanı karıştırmasına izin verme.
Örnek:
kod | Not |
---|---|
|
|
3. Dizi karşılaştırma örneği
Basit bir örnek verelim: klavyeden iki satır girmeniz ve bunların aynı olup olmadığını belirlemeniz gerektiğini varsayalım. Bu, kodun nasıl görüneceği:
Scanner console = new Scanner(System.in);
String a = console.nextLine();
String b = console.nextLine();
String result = a.equals(b) ? "Same" : "Different";
System.out.println(result);
4. Dize karşılaştırmasında ilginç bir nüans
Farkında olmanız gereken önemli bir nüans var.
Java derleyicisi kodunuzda (özellikle sizin kodunuzda) birden çok aynı dize bulursa , bellekten tasarruf etmek için bunlar için yalnızca tek bir nesne oluşturur.
String text = "This is a very important message";
String message = "This is a very important message";
Ve sonuç olarak belleğin içereceği şey şu:

Ve burada karşılaştırırsanız text == message
, o zaman elde edersiniz true
. Bu yüzden buna şaşırmayın.
Herhangi bir nedenle referansların gerçekten farklı olmasına ihtiyacınız varsa, bunu yazabilirsiniz:
String text = "This is a very important message";
String message = new String ("This is a very important message");
Veya bu:
String text = "This is a very important message";
String message = new String (text);
Her iki durumda da, text
ve message
değişkenleri aynı metni içeren farklı nesnelere işaret eder.
GO TO FULL VERSION