1. Dizeleri karşılaştırma

Her şey yolunda. s1Ancak ve s2dizelerinin aslında aynı olduğunu, yani aynı metni içerdiklerini görebilirsiniz . StringDizeleri 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 Stringsınıfının yöntemi vardır equals. Aramak şöyle görünür:

string1.equals(string2)
İki diziyi karşılaştırma

Bu yöntem, truedizeler aynıysa ve falseaynı değilse döndürür.

Örnek:

kod Not
String s1 = "Hello";
String s2 = "HELLO";
String s3 = s1.toUpperCase();

System.out.println(s1.equals(s2));
System.out.println(s1.equals(s3));
System.out.println(s2.equals(s3));
// Hello
// HELLO
// HELLO

false // They are different
false // They are different
true // They are the same, even though the addresses are different

Daha fazla örnek:

kod Açıklama
"Hello".equals("HELLO")
false
String s = "Hello";
"Hello".equals(s);
true
String s = "Hel";
"Hello".equals(s + "lo");
true
String s = "H";
(s + "ello").equals(s + "ello");
true

4
Görev
Java Syntax,  seviyeders
Kilitli
Minimum of two numbers
All search and sort algorithms are based on comparisons. You'll be able to handle these very soon, if you so desire. In the meantime, we suggest starting with something small: write a program to find the minimum of two numbers. Find it and then display it. And if the numbers are the same, display either of them.
4
Görev
Java Syntax,  seviyeders
Kilitli
Maximum of four numbers
Finding the maximum is an n-ary operation (an operation on n numbers) that returns the largest of several numbers. Never mind. We have no need for such definitions at the secret CodeGym center. We're here to learn how to write code. In this task, you need to use the keyboard to enter four numbers. Then determine the largest of them and display it on the screen.

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 Stringbaş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 Lve ikincisi büyük harftir i. Bunun kafanı karıştırmasına izin verme.

Örnek:

kod Not
String s1 = "Hello";
String s2 = "HELLO";
String s3 = s1.toUpperCase();

System.out.println(s1.equalsIgnoreCase(s2));
System.out.println(s1.equalsIgnoreCase(s3));
System.out.println(s2.equalsIgnoreCase(s3));
// Hello
// HELLO
// HELLO

true
true
true

8
Görev
Java Syntax,  seviyeders
Kilitli
Sorting three numbers
Planet Linear Chaos is populated by isomorphs. They are believed to have invented sorting algorithms. Everything in their heads is extremely well-ordered. They only issue planetary visas to people who know at least 7 sorting algorithms. Let's take our first step toward Linear Chaos: Read three numbers from the keyboard, put them in descending order, and then display them on the screen.

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:

dizi karşılaştırması

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, textve messagedeğişkenleri aynı metni içeren farklı nesnelere işaret eder.


4
Görev
Java Syntax,  seviyeders
Kilitli
Jen or Jen?
Jen, Company X's admin, learned how to pilot a space ship and flew away to another planet. People in Company X are good and sincere. It's just that they're scatterbrained and they mix up names. So they decided that the new administrator would also be called Jen. Let's help Company X find their Jen: write a program that checks the identity of two entered names.