Menu
Coddy logo textTech

String Comparison

Parte de la sección Fundamentos del Journey de Java de Coddy — lección 70 de 73.

En Java, comparar cadenas no es tan directo como comparar tipos de datos primitivos como enteros o caracteres. No puedes usar el operador == para comparar cadenas en busca de igualdad porque las cadenas son objetos, y == compararía sus direcciones de memoria, no su contenido. En su lugar, necesitas usar métodos específicos proporcionados por la clase String para comparar los caracteres reales dentro de las cadenas.

Aquí están los métodos principales para la comparación de cadenas:

  • equals(Object other): Compara la cadena con otro objeto (generalmente otra cadena). Devuelve true si las cadenas tienen los mismos caracteres en el mismo orden, false de lo contrario. Este método es sensible a mayúsculas y minúsculas.
  • equalsIgnoreCase(String other): Similar a equals, pero ignora el caso. Devuelve true si las cadenas tienen los mismos caracteres, independientemente de su caso, false en caso contrario.
  • compareTo(String other): Compara dos cadenas lexicográficamente (basado en sus valores Unicode). Devuelve 0 si las cadenas son iguales, un número negativo si la primera cadena es menor que la segunda, y un número positivo si la primera cadena es mayor que la segunda. Este método es sensible a mayúsculas y minúsculas.
  • compareToIgnoreCase(String other): Similar a compareTo, pero ignora el caso.

Aquí hay un ejemplo:

String str1 = "hello";
String str2 = "hello";
String str3 = "HELLO";
String str4 = "world";

boolean eq1 = str1.equals(str2); // verdadero
boolean eq2 = str1.equals(str3); // falso
boolean eq3 = str1.equalsIgnoreCase(str3); // verdadero

int cmp1 = str1.compareTo(str2); // 0
int cmp2 = str1.compareTo(str4); // valor negativo
int cmp3 = str4.compareTo(str1); // valor positivo
int cmp4 = str1.compareToIgnoreCase(str3); // 0
challenge icon

Desafío

Fácil

Crea un método llamado compareStrings que tome dos cadenas como entrada y realice las siguientes comparaciones:

  1. Verifica si las dos cadenas son iguales usando equals e imprime el resultado.
  2. Verifica si las dos cadenas son iguales (ignorando mayúsculas y minúsculas) usando equalsIgnoreCase e imprime el resultado.
  3. Compara las dos cadenas usando compareTo e imprime el resultado.
  4. Compara las dos cadenas (ignorando mayúsculas y minúsculas) usando compareToIgnoreCase e imprime el resultado.

Salida de ejemplo para las cadenas de entrada HELLO y hello:

HELLO equals hello: false
HELLO equalsIgnoreCase hello: true
HELLO compareTo hello: -32
HELLO compareToIgnoreCase hello: 0

Hoja de referencia

En Java, utiliza métodos específicos para comparar cadenas, no el operador == que compara direcciones de memoria:

  • equals(Object other): Comparación de igualdad sensible a mayúsculas y minúsculas
  • equalsIgnoreCase(String other): Comparación de igualdad insensible a mayúsculas y minúsculas
  • compareTo(String other): Comparación lexicográfica sensible a mayúsculas y minúsculas (devuelve 0 si son iguales, negativo si la primera < segunda, positivo si la primera > segunda)
  • compareToIgnoreCase(String other): Comparación lexicográfica insensible a mayúsculas y minúsculas
String str1 = "hello";
String str2 = "HELLO";

boolean eq1 = str1.equals(str2); // false
boolean eq2 = str1.equalsIgnoreCase(str2); // true

int cmp1 = str1.compareTo(str2); // positive value
int cmp2 = str1.compareToIgnoreCase(str2); // 0

Pruébalo tú mismo

import java.util.Scanner;

public class Main {
    public static void compareStrings(String str1, String str2) {
        // Escribe tu código aquí
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String str1 = scanner.nextLine();
        String str2 = scanner.nextLine();
        compareStrings(str1, str2);
    }
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos