Șirul este o secvență de caractere. În Java, obiectele String sunt imuabile, ceea ce înseamnă că sunt constante și nu pot fi modificate odată create.
instrucțiunea javascript if
Metode de comparare a șirurilor în Java
Mai jos sunt 5 moduri de a compara două Siruri de caractere în Java:
- Utilizarea funcției definite de utilizator
- Folosind String.equals()
- Folosind String.equalsIgnoreCase()
- Folosind Objects.equals()
- Folosind String.compareTo()
1. Folosind funcția definită de utilizator:
Definiți o funcție pentru a compara valorile cu următoarele condiții:
- dacă (șir1> șir2) returnează a valoare pozitivă .
- dacă ambele șiruri sunt egale din punct de vedere lexicografic, adică (șir1 == șir2) returnează 0 .
- dacă (șir 1
valoare negativă .
2. Folosind String.equals() :
În Java, metoda string equals() compară cele două șiruri date pe baza datelor/conținutului șirului. Dacă tot conținutul ambelor șiruri este același, atunci returnează adevărat. Dacă vreun caracter nu se potrivește, atunci returnează false.
Sintaxă:
str1.equals(str2);>
Aici str1 și str2 sunt ambele șiruri de caractere care trebuie comparate.
Exemple:
Input 1: techcodeview.com Input 2: Practice Output: false Input 1: Geeks Input 2: Geeks Output: true Input 1: geeks Input 2: Geeks Output: false>
Program:
Java
// Java program to Compare two strings // lexicographically public class GFG { public static void main(String args[]) { String string1 = new String('Geeksforgeeks'); String string2 = new String('Practice'); String string3 = new String('Geeks'); String string4 = new String('Geeks'); String string5 = new String('geeks'); // Comparing for String 1 != String 2 System.out.println('Comparing ' + string1 + ' and ' + string2 + ' : ' + string1.equals(string2)); // Comparing for String 3 = String 4 System.out.println('Comparing ' + string3 + ' and ' + string4 + ' : ' + string3.equals(string4)); // Comparing for String 4 != String 5 System.out.println('Comparing ' + string4 + ' and ' + string5 + ' : ' + string4.equals(string5)); // Comparing for String 1 != String 4 System.out.println('Comparing ' + string1 + ' and ' + string4 + ' : ' + string1.equals(string4)); } }>
Ieșire
Comparing Geeksforgeeks and Practice : false Comparing Geeks and Geeks : true Comparing Geeks and geeks : false Comparing Geeksforgeeks and Geeks : false>
3. Folosind String.equalsIgnoreCase() :
The String.equalsIgnoreCase() metoda compară două șiruri de caractere, indiferent de literă (inferioară sau superioară) a șirului. Această metodă returnează true dacă argumentul nu este nul și conținutul ambelor șiruri este aceeași ignorând majuscule și minuscule, altfel fals. Sintaxă:
str2.equalsIgnoreCase(str1);>
Aici str1 și str2 sunt ambele șiruri care trebuie comparate.
Exemple:
Input 1: techcodeview.com Input 2: Practice Output: false Input 1: Geeks Input 2: Geeks Output: true Input 1: geeks Input 2: Geeks Output: true>
Program:
Java // Java program to Compare two strings // lexicographically public class GFG { public static void main(String args[]) { String string1 = new String('Geeksforgeeks'); String string2 = new String('Practice'); String string3 = new String('Geeks'); String string4 = new String('Geeks'); String string5 = new String('geeks'); // Comparing for String 1 != String 2 System.out.println( 'Comparing ' + string1 + ' and ' + string2 + ' : ' + string1.equalsIgnoreCase(string2)); // Comparing for String 3 = String 4 System.out.println( 'Comparing ' + string3 + ' and ' + string4 + ' : ' + string3.equalsIgnoreCase(string4)); // Comparing for String 4 = String 5 System.out.println( 'Comparing ' + string4 + ' and ' + string5 + ' : ' + string4.equalsIgnoreCase(string5)); // Comparing for String 1 != String 4 System.out.println( 'Comparing ' + string1 + ' and ' + string4 + ' : ' + string1.equalsIgnoreCase(string4)); } }>
Ieșire
Comparing Geeksforgeeks and Practice : false Comparing Geeks and Geeks : true Comparing Geeks and geeks : true Comparing Geeksforgeeks and Geeks : false>
4. Folosind Objects.equals() :
Object.equals(Obiect a, Obiect b) metoda returnează true dacă argumentele sunt egale între ele și false în caz contrar. În consecință, dacă ambele argumente sunt nule, se returnează adevărat și dacă exact un argument este nul, se returnează false. În caz contrar, egalitatea este determinată prin utilizarea metodei equals() a primului argument. Sintaxă:
public static boolean equals(Object a, Object b)>
Aici a și b sunt ambele obiecte șir care trebuie comparate.
Exemple:
Input 1: techcodeview.com Input 2: Practice Output: false Input 1: Geeks Input 2: Geeks Output: true Input 1: null Input 2: null Output: true>
Program:
Java // Java program to Compare two strings // lexicographically import java.util.*; public class GFG { public static void main(String args[]) { String string1 = new String('Geeksforgeeks'); String string2 = new String('Geeks'); String string3 = new String('Geeks'); String string4 = null; String string5 = null; // Comparing for String 1 != String 2 System.out.println( 'Comparing ' + string1 + ' and ' + string2 + ' : ' + Objects.equals(string1, string2)); // Comparing for String 2 = String 3 System.out.println( 'Comparing ' + string2 + ' and ' + string3 + ' : ' + Objects.equals(string2, string3)); // Comparing for String 1 != String 4 System.out.println( 'Comparing ' + string1 + ' and ' + string4 + ' : ' + Objects.equals(string1, string4)); // Comparing for String 4 = String 5 System.out.println( 'Comparing ' + string4 + ' and ' + string5 + ' : ' + Objects.equals(string4, string5)); } }>
Ieșire
Comparing Geeksforgeeks and Geeks : false Comparing Geeks and Geeks : true Comparing Geeksforgeeks and null : false Comparing null and null : true>
5. Folosind String.compareTo() pentru a compara două șiruri
Sintaxa șirului compareTo()
int str1.compareTo(String str2)>
Lucru: Compară și returnează următoarele valori după cum urmează:
- dacă (șir1> șir2) returnează a valoare pozitivă .
- dacă ambele șiruri sunt egale din punct de vedere lexicografic, adică (șir1 == șir2) returnează 0 .
- dacă (șir 1
valoare negativă .
Mai jos este implementarea metodei de mai sus
Java // Java program to Compare two strings // Using String.compareTo() import java.util.*; // Diver Class public class GFG { public static void check(String string1, String string2) { if (string1.compareTo(string2)!=0) { System.out.println(string1 + ' ' + string2 + ' : Not Equal'); } else { System.out.println(string1 + ' ' + string2 + ' : Equal'); } } // main function public static void main(String args[]) { String string1 = new String('Geeksforgeeks'); String string2 = new String('Geeks'); String string3 = new String('Geeks'); String string4 = ' '; String string5 = ' '; // Comparing for String 1 != String 2 check(string1, string2); // Comparing for String 2 = String 3 check(string2, string3); // Comparing for String 1 != String 4 check(string1, string4); // Comparing for String 4 = String 5 check(string4, string5); } }>
Ieșire
Geeksforgeeks Geeks : Not Equal Geeks Geeks : Equal Geeksforgeeks : Not Equal : Equal>
Notă: Șirul NULL nu poate fi transmis ca argument la metoda compareTo().
Pentru a afla mai multe despre subiect, consultați String.compareTo() articol.
De ce să nu folosiți == pentru compararea șirurilor de caractere?
În general, ambele este egal() și == operatorii din Java sunt folosiți pentru a compara obiecte pentru a verifica egalitatea, dar iată câteva dintre diferențele dintre cele două:
- Principala diferență dintre metoda .equals() și operatorul == este că una este metoda, iar cealaltă este operatorul.
- Se pot folosi operatorii == pentru compararea de referință (comparație de adrese) iar metoda .equals() pentru comparație de conținut .
- Atât s1 cât și s2 se referă la obiecte diferite.
- Când se utilizează operatorul == pentru comparația s1 și s2, atunci rezultatul este fals, deoarece ambele au adrese diferite în memorie.
- Folosind egal, rezultatul este adevărat, deoarece compară doar valorile date în s1 și s2.
Pentru a afla mai multe despre subiect, consultați comparație de șiruri articol.