1. Compararea corzilor

Toate acestea sunt bine și bune. Dar puteți vedea că șirurile s1și s2sunt de fapt aceleași, ceea ce înseamnă că conțin același text. Când comparați șirurile de caractere, cum îi spuneți programului să nu se uite la adresele obiectelor String, ci la conținutul acestora?

Pentru a ne ajuta în acest sens, clasa Java Stringare equalsmetoda. Apelarea arată astfel:

string1.equals(string2)
Comparând două șiruri

Această metodă returnează truedacă șirurile sunt aceleași și falsedacă nu sunt aceleași.

Exemplu:

Cod 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

Mai multe exemple:

Cod Explicaţie
"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
Sarcină
Java Syntax,  nivellecţie
Blocat
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
Sarcină
Java Syntax,  nivellecţie
Blocat
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. Compararea șirurilor de caractere care nu ține seama de majuscule și minuscule

În ultimul exemplu, ați văzut că comparația dă . Într-adevăr, șirurile nu sunt egale. Dar..."Hello".equals("HELLO")false

În mod clar, șirurile nu sunt egale. Acestea fiind spuse, conținutul lor are aceleași litere și diferă doar prin cazul literelor. Există vreo modalitate de a le compara și de a ignora cazul literelor? Adică, astfel încât randamentele ?"Hello".equals("HELLO")true

Și răspunsul la această întrebare este da. În Java, Stringtipul are o altă metodă specială: equalsIgnoreCase. Apelarea arată astfel:

string1.equalsIgnoreCase(string2)

Numele metodei se traduce aproximativ ca compara, dar ignora majuscule . Literele din numele metodei includ două linii verticale: prima este o literă mică L, iar a doua este o literă mare i. Nu lăsa asta să te încurce.

Exemplu:

Cod 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
Sarcină
Java Syntax,  nivellecţie
Blocat
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. Exemplu de comparație de șiruri

Să dăm doar un exemplu simplu: să presupunem că trebuie să introduceți două linii de la tastatură și să determinați dacă sunt aceleași. Iată cum va arăta codul:

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. O nuanță interesantă a comparației șirurilor

Există o nuanță importantă de care trebuie să fii conștient.

Dacă compilatorul Java găsește mai multe șiruri identice în codul dvs. (în special în codul dvs.), atunci va crea doar un singur obiect pentru ele pentru a economisi memorie.

String text = "This is a very important message";
String message = "This is a very important message";

Și iată ce va conține memoria ca rezultat:

comparație de șiruri

Și dacă comparați text == messageaici, atunci obțineți true. Deci nu fi surprins de asta.

Dacă dintr-un motiv oarecare aveți nevoie într-adevăr ca referințele să fie diferite, atunci puteți scrie asta:

String text = "This is a very important message";
String message = new String ("This is a very important message");

Sau asta:

String text = "This is a very important message";
String message = new String (text);

În ambele cazuri, variabilele textși messageindică obiecte diferite care conțin același text.


4
Sarcină
Java Syntax,  nivellecţie
Blocat
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.