Compare duas Strings em Java
String é uma sequência de caracteres. Em Java, os objetos de String são imutáveis, o que significa que são constantes e não podem ser alterados depois de criados.
Abaixo estão 5 maneiras de comparar duas Strings em Java:
- Usando a função definida pelo usuário: defina uma função para comparar os valores com as seguintes condições:
- se (string1> string2) retorna um valor positivo .
- se ambas as strings forem iguais lexicograficamente,
ou seja, (string1 == string2) ele retorna 0 . - se (string1 <string2) retorna um valor negativo .
O valor é calculado como (int) str1.charAt (i) - (int) str2.charAt (i)
Exemplos:
Entrada 1: GeeksforGeeks Entrada 2: Resultado da prática : -9 Entrada 1: Geeks Input 2: Geeks Output: 0 Entrada 1: GeeksforGeeks Entrada 2: Geeks Saída : 8
Programa:
// Java program to Compare two strings
// lexicographically
public
class
GFG {
// This method compares two strings
// lexicographically without using
// library functions
public
static
int
stringCompare(String str1, String str2)
{
int
l1 = str1.length();
int
l2 = str2.length();
int
lmin = Math.min(l1, l2);
for
(
int
i =
0
; i < lmin; i++) {
int
str1_ch = (
int
)str1.charAt(i);
int
str2_ch = (
int
)str2.charAt(i);
if
(str1_ch != str2_ch) {
return
str1_ch - str2_ch;
}
}
// Edge case for strings like
// String 1="Geeks" and String 2="Geeksforgeeks"
if
(l1 != l2) {
return
l1 - l2;
}
// If none of the above conditions is true,
// it implies both the strings are equal
else
{
return
0
;
}
}
// Driver function to test the above program
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"
);
// Comparing for String 1 < String 2
System.out.println(
"Comparing "
+ string1 +
" and "
+ string2
+
" : "
+ stringCompare(string1, string2));
// Comparing for String 3 = String 4
System.out.println(
"Comparing "
+ string3 +
" and "
+ string4
+
" : "
+ stringCompare(string3, string4));
// Comparing for String 1 > String 4
System.out.println(
"Comparing "
+ string1 +
" and "
+ string4
+
" : "
+ stringCompare(string1, string4));
}
}
Saída:Comparando Geeksforgeeks e a prática: -9 Comparando Geeks e Geeks: 0 Comparando Geeksforgeeks e Geeks: 8
- Usando String.equals(): Em Java, o método string equals() compara as duas strings fornecidas com base nos dados / conteúdo da string. Se todo o conteúdo de ambas as strings for o mesmo, ele retornará verdadeiro. Se algum caractere não corresponder, ele retornará falso.
Sintaxe:
str1.equals (str2);
Aqui str1 e str2 são as strings que devem ser comparadas.
Exemplos:
Entrada 1: GeeksforGeeks Entrada 2: Resultado da prática : falso Entrada 1: Geeks Entrada 2: Geeks Saída: verdadeiro Entrada 1: geeks Entrada 2: Geeks Saída: falso
Programa:
// 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));
}
}
Saída:Comparando Geeksforgeeks e Practice: false Comparando Geeks e Geeks: verdadeiro Comparando geeks e geeks: falso Comparando Geeksforgeeks e Geeks: falso
- Usando String.equalsIgnoreCase(): O método String.equalsIgnoreCase() compara duas strings, independentemente do caso (inferior ou superior) da string. Este método retorna verdadeiro se o argumento não for nulo e o conteúdo de ambas as Strings for o mesmo, ignorando maiúsculas e minúsculas, caso contrário, será falso.
Sintaxe:
str2.equalsIgnoreCase (str1);
Aqui str1 e str2 são as strings que devem ser comparadas.
Exemplos:
Entrada 1: GeeksforGeeks Entrada 2: Resultado da prática : falso Entrada 1: Geeks Entrada 2: Geeks Saída: verdadeiro Entrada 1: geeks Entrada 2: Geeks Saída: verdadeiro
Programa:
// 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));
}
}
Saída:Comparando Geeksforgeeks e Practice: false Comparando Geeks e Geeks: verdadeiro Comparando geeks e geeks: verdadeiro Comparando Geeksforgeeks e Geeks: falso
- Usando Objects.equals(): o método Object.equals (Object a, Object b) retorna verdadeiro se os argumentos são iguais entre si e falso caso contrário. Conseqüentemente, se ambos os argumentos forem nulos, true será retornado e se exatamente um argumento for nulo, false será retornado. Caso contrário, a igualdade é determinada usando o método equals() do primeiro argumento.
Sintaxe:
public static boolean equals (objeto a, objeto b)
Aqui, aeb são os objetos string que devem ser comparados.
Exemplos:
Entrada 1: GeeksforGeeks Entrada 2: Resultado da prática : falso Entrada 1: Geeks Entrada 2: Geeks Saída: verdadeiro Entrada 1: nula Entrada 2: nula Saída: verdadeiro
Programa:
// 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));
}
}
Saída:Comparando Geeksforgeeks e Geeks: falso Comparando Geeks e Geeks: verdadeiro Comparando Geeksforgeeks e null: false Comparando nulo e nulo: verdadeiro
- Usando String.compareTo() :
Sintaxe:
int str1.compareTo (String str2)
Funcionando:
compara e retorna os seguintes valores da seguinte maneira:- if (string1> string2) retorna um valor positivo .
- se ambas as strings forem iguais lexicograficamente,
ou seja, (string1 == string2) ele retorna 0 . - if (string1 <string2) retorna um valor negativo .
Exemplos:
Entrada 1: GeeksforGeeks Entrada 2: Resultado da prática : -9 Entrada 1: Geeks Entrada 2: Geeks Saída: 0 Entrada 1: GeeksforGeeks Entrada 2: Saída Geeks : 8
Programa:
// 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(
"Practice"
);
String string3 =
new
String(
"Geeks"
);
String string4 =
new
String(
"Geeks"
);
// Comparing for String 1 < String 2
System.out.println(
"Comparing "
+ string1 +
" and "
+ string2
+
" : "
+ string1.compareTo(string2));
// Comparing for String 3 = String 4
System.out.println(
"Comparing "
+ string3 +
" and "
+ string4
+
" : "
+ string3.compareTo(string4));
// Comparing for String 1 > String 4
System.out.println(
"Comparing "
+ string1 +
" and "
+ string4
+
" : "
+ string1.compareTo(string4));
}
}
Saída:Comparando Geeksforgeeks e a prática: -9 Comparando Geeks e Geeks: 0 Comparando Geeksforgeeks e Geeks: 8
Por que não usar == para comparação de Strings?
Em geral, os operadores equals() e “ == ” em Java são usados para comparar objetos para verificar a igualdade, mas aqui estão algumas das diferenças entre os dois:
- A principal diferença entre o método .equals() e o operador == é que um é o método e o outro é o operador.
- Pode-se usar operadores == para comparação de referência (comparação de endereço) e método .equals() para comparação de conteúdo .
Em palavras simples, == verifica se ambos os objetos apontam para a mesma localização da memória enquanto .equals() avalia a comparação de valores nos objetos.
Exemplo:
// Java program to understand
// why to avoid == operator
public
class
Test {
public
static
void
main(String[] args)
{
String s1 =
new
String(
"HELLO"
);
String s2 =
new
String(
"HELLO"
);
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));
}
}
Saída:falso verdade
Explicação: Aqui, dois objetos String estão sendo criados, a saber, s1 e s2.
- Tanto s1 quanto s2 se referem a objetos diferentes.
- Quando se usa o operador == para a comparação s1 e s2, o resultado é falso, pois ambos têm endereços diferentes na memória.
- Usando igual, o resultado é verdadeiro porque é apenas comparando os valores dados em s1 e s2.
Atenção leitor! Não pare de aprender agora. Obtenha todos os conceitos importantes de Java Foundation e Coleções com o curso Fundamentals of Java e Java Collections a um preço acessível ao aluno e torne-se pronto para a indústria. Para completar sua preparação desde o aprendizado de um idioma até o DS Algo e muitos mais, consulte o Curso Completo de Preparação para Entrevistas .
As postagens do blog Acervo Lima te ajudaram? Nos ajude a manter o blog no ar!
Faça uma doação para manter o blog funcionando.
70% das doações são no valor de R$ 5,00...
Diógenes Lima da Silva