Como comparar duas Strings em Java (11 Métodos)

Java fornece diferentes métodos que você pode aproveitar para comparar duas strings em Java. A comparação de strings em Java é um recurso que combina uma sequência de caracteres com uma string.

Para aprender como comparar strings em Java, você pode usar os métodos fornecidos a seguirwing classes.

  • Classe String do pacote Java.lang.
  • Classe de objetos do pacote Java.util.
  • Classe StringUtils do pacote org.apache.commons.lang3.

A maioria desses métodos de comparação de strings Java tem soluções para ignorar o caso. Nisso Tutorial Java, você aprenderá os diferentes métodos que podem ser usados ​​para comparar duas strings.

Método 1: método String equals()

A Cadeia Java método equals () compares dois objetos string para valores de string iguais.

Sintaxe:

public boolean equals(Object anObject)

Parâmetros do método equals():

anObject – A string de argumento para comparar strings.

tipos de retorno do método equals()

  • Retorna verdadeiro se a string literal fornecida for igual à primeira string.
  • Retorna falso se a primeira string não for igual à string do argumento.

Exemplo:

public class CompareTwoStrings {
 public static void main(String[] args) {
   String stringOne = "Guru99";
   String stringTwo = "Guru99";
   System.out.println("is Guru99 equal to Guru99: "+stringOne.equals(stringTwo));
   String stringThree = "GURU99";
   System.out.println("is Guru99 equal to GURU99: "+stringOne.equals(stringThree));
  }
}

Resultado esperado:

is Guru99 equal to Guru99: true
is Guru99 equal to GURU99: false

Explicação:

  • Você obteve falso na última saída porque o objeto especificado possui um caso diferente.

Note: use o método string equals para comparação de strings com distinção entre maiúsculas e minúsculas. Use o método “equalsIgnoreCase” para comparar objetos string com diferentes valores de string.

Método 2: Método de objetos equals()

A Objetos Java são iguais() comparação de métodoares dois objetos string para descobrir se eles têm os mesmos valores.

Sintaxe:

public static boolean equals(Object a, Object b)

parâmetros do método equals()

a – String de argumento para o primeiro objeto string.

b – String de argumentos para o segundo objeto string.

tipos de retorno do método equals()

  • Retorna verdadeiro se os literais da string forem iguais. Passar um valor nulo nos dois argumentos também retornará verdadeiro.
  • Retorna falso se os literais da string não forem iguais.

Exemplo:

import java.util.Objects;
public class CompareTwoStrings {
    public static void main(String[] args) {
        String stringOne = "Guru99";
        String stringTwo = "Guru99";
        System.out.println("is Guru99 equal to Guru99: " + Objects.equals(stringOne, stringTwo));
        String stringThree = null;
        String stringFour = null;
        System.out.println("is Guru99 equal to Guru99: " + Objects.equals(stringThree, stringFour));
    }
}

Saída:

is Guru99 equal to Guru99: true
is Guru99 equal to Guru99: true

Explicação:

Neste exemplo, você pode ver que a saída é um valor booleano verdadeiro, pois as strings comparadas são iguais.

Método 3: método String compareTo()

A String Java compareTo() comparação de métodoares duas strings em ordem alfabética. Geralmente é chamada de ordem lexicográfica.

Sintaxe:

public int compareTo(String str)

Parâmetros do método compareTo()

str – A string a ser comparada com a string atual.

O método compareTo() retorna

  • 0 – Retorna zero se o objeto especificado for igual à string atual.
  • < 0 – Retorna um número menor que zero se esta string for menor que o objeto especificado.
  • > 0 – Retorna um número maior que zero se esta string exceder a string fornecida.

Exemplo:

public class CompareTwoStrings {
    public static void main(String[] args) {
        String stringOne = "Guru99";
        String stringTwo = "Guru99";
        System.out.println("is Guru99 equal to Guru99: " + stringOne.compareTo(stringTwo));
        String stringThree = "GURU99";
		// u = 117, U = 85, result = 117-85 = 32
        System.out.println("is Guru99 equal to GURU99: " + stringOne.compareTo(stringThree));
    }
}

Resultado esperado:

is Guru99 equal to Guru99: 0
is Guru99 equal to GURU99: 32

Explicação:

O primeiro resultado retorna um valor zero, pois a primeira e a segunda strings são iguais.

O segundo resultado retorna um valor trinta e dois, pois os caracteres são diferentes.

Nota: Para ignorar os casos, você pode usar o método “compareToIgnoreCase”.

Método 4: método StringUtils equals()

A Java StringUtils é igual() comparação de métodoares a igualdade de duas sequências de caracteres.

Certifique-se de ter adicionado a biblioteca “org.apache.commons.lang3” em seu programa. Isso permitirá que você compare strings usando os métodos StringUtil.

Para projetos Maven, use isto guia para adicionar a biblioteca ao projeto.

No entanto, se você quiser adicionar a biblioteca sem nenhuma ferramenta de construção, use este guia.

Sintaxe:

public static boolean equals(CharSequnce cs1, CharSequence cs2)

Parâmetros do método StringUtils equals()

  • cs1 – Uma sequência de caracteres para o primeiro argumento.
  • cs2 – Uma sequência de caracteres para o segundo argumento.

O método StringUtils equals() retorna

  • Retorna verdadeiro se a comparação da string for igual. Aplica-se se você passar um valor nulo nos dois argumentos.
  • Retorna falso se a comparação da string não for igual.

Exemplo:

import org.apache.commons.lang3.StringUtils;
public class CompareTwoStrings {
    public static void main(String[] args) {
        String stringOne = "Guru99";
        String stringTwo = "Guru99";
        System.out.println("is Guru99 equal to Guru99: " + StringUtils.equals(stringOne, stringTwo));
        String stringThree = "GURU99";
        System.out.println("is Guru99 equal to GURU99: " + StringUtils.equals(stringOne, stringThree));
    }
}

Saída:

is Guru99 equal to Guru99: true
is Guru99 equal to GURU99: false

Explicação:

Como o conteúdo da primeira e da segunda string é igual, o resultado retorna verdadeiro.

Você pode usar o método “equalsIgnoreCase” para ignorar o caso.

Método 5: método StringUtils equalsAny()

A Java StringUtils igual aAny() O método verifica se existe uma string nos argumentos.

Sintaxe:

public static boolean equalsAny(CharSequence string, Charsequence… searchStrings)

Parâmetros do método StringUtils equalsAny()

  • string – O valor da string para o primeiro argumento. O argumento também pode ter um valor nulo.
  • searchStrings – Um conjunto de argumentos de string para o método descobrir se a primeira string de argumento está presente.

O método StringUtils equalsAny() retorna

  • Retorna verdadeiro se a string a ser correspondida existir no número variável de strings de pesquisa. Isso se aplica se ambos os argumentos forem nulos.
  • Retorna falso se a string a ser correspondida não corresponder a nenhuma string no número variável de strings de pesquisa.

Exemplo:

import org.apache.commons.lang3.StringUtils;
public class CompareTwoStrings {
    public static void main(String[] args) {
        String stringOne = "Guru99";
        String[] stringTwo = new String[] {
            "Guru99",
            "JavaGuru99"
        };
        System.out.println("is Guru99 available: " +
            StringUtils.equalsAny(stringOne, stringTwo));
        String[] stringThree = new String[] {
            "GURU99",
            "JavaGuru99"
        };
        System.out.println("is GURU99 available: " +
            StringUtils.equalsAny(stringOne, stringThree));
    }
}

Saída:

is Guru99 available: true
is GURU99 available: false

Explicação:

Como o conteúdo da primeira e da segunda string são iguais, o resultado retorna verdadeiro. Você pode usar o método “equalsAnyIgnoreCase” para ignorar o caso.

Método 6: usando o operador ==

O operador == em strings verifica se as referências de objetos têm o mesmo endereço.

Exemplo:

public class CompareTwoStrings {
    public static void main(String[] args) {
        String stringOne = "Guru99";
        String stringTwo = "Guru99";
        System.out.println("is Guru99 == to Guru99: " + (stringOne == stringTwo));
        String stringThree = "GURU99";
        System.out.println("is Guru99 == to GURU99: " + (stringOne == stringThree));
    }
}

Resultado esperado:

is Guru99 == to Guru99: true
is Guru99 == to GURU99: false

Explicação:

  • O primeiro resultado retorna um valor booleano verdadeiro. Strings com o mesmo conteúdo são adicionadas ao mesmo conjunto de strings, portanto, a string compartilha um endereço.
  • O segundo resultado retorna um valor booleano falso. Os objetos possuem conteúdos diferentes, o que resulta em outros conjuntos de strings. Isso significa que as strings possuem referências de objetos separadas; portanto, a saída é falsa.

Método 7: Criando um método personalizado para comparar duas strings em Java

Crie um método que compitaares duas strings usando ordem lexicográfica.

Sintaxe:

public static int compareTwoStrings(String str1, String str2)

Parâmetros de método personalizado

  • str1 – A string a ser comparada.
  • str2 – A string com a qual comparar.

Retornos de métodos personalizados

  • 0 – Retorna zero se a primeira string for igual à segunda string.
  • < 0 – Retorna um número menor que zero se a primeira string for menor que a segunda string.
  • > 0 – Retorna um número maior que zero se a primeira string for maior que a segunda string.

Exemplo:

public class CompareTwoStrings {
    public static int compareTwoStrings(String stringOne, String stringTwo) {
        int lengthOfStringOne = stringOne.length();
        int lengthOfStringTwo = stringTwo.length();
        int minStringLength = Math.min(lengthOfStringOne, lengthOfStringTwo);
        for (int i = 0; i < minStringLength; i++) {
            char stringOneCharValue = stringOne.charAt(i);
            char stringTwoCharValue = stringTwo.charAt(i);
            if (stringOneCharValue != stringTwoCharValue) {
                return stringOneCharValue - stringTwoCharValue;
            }
        }
        if (lengthOfStringOne != lengthOfStringTwo) {
            return lengthOfStringOne - lengthOfStringTwo;
        } else {
            return 0;
        }
    }
    public static void main(String[] args) {
        String stringOne = "Guru99";
        String stringTwo = "Guru99";
        System.out.println("is Guru99 equal to Guru99: " + compareTwoStrings(stringOne, stringTwo));
    }
}

Resultado esperado:

is Guru99 equal to Guru99: 0

Explicação:

O resultado retornou um valor zero, significando que a função personalizada está funcionando conforme o esperado.

Resumo:

O método Java de comparação de duas strings a ser usado depende do seguintewing fatores.

  • Desejo de ter controle sobre seu método. Nesse caso, crie um método personalizado.
  • Você não pode usar código legado. com Java 6 e inferior.
  • O método que tem desempenho ideal.
  • O tipo de dados com os quais você está trabalhando. Por exemplo, combinando uma string de um conjunto de argumentos variáveis.
  • Os recursos fornecidos pela biblioteca terceirizada. Por exemplo, a biblioteca StringUtils fornece vários métodos para comparar strings.