Sobes.tech
Junior

¿Para qué se utilizan los métodos equals() y toString() en Java?

sobes.tech AI

Respuesta de la IA

El método equals() se utiliza para comparar objetos en términos de equivalencia lógica, es decir, determina si dos objetos representan el mismo valor o entidad, independientemente de si son el mismo objeto físico en memoria.

El método toString() se usa para obtener una representación en cadena del objeto. Por defecto, devuelve una cadena que contiene el nombre de la clase y su código hash, pero a menudo se sobrescribe para proporcionar una descripción más informativa del estado del objeto.

public class ExampleObject {
    private int id;
    private String name;

    public ExampleObject(int id, String name) {
        this.id = id;
        this.name = name;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true; // Comparación de referencias
        if (o == null || getClass() != o.getClass()) return false; // Verificación de tipo y null
        ExampleObject that = (ExampleObject) o; // Casting de tipo
        return id == that.id && // Comparación por campos significativos
               name.equals(that.name);
    }

    @Override
    public int hashCode() {
        // Sobrescribir hashCode es obligatorio al sobrescribir equals
        return Objects.hash(id, name);
    }

    @Override
    public String toString() {
        return "ExampleObject{" +
               "id=" + id +
               ", name='" + name + '\'' +
               '}';
    }

    public static void main(String[] args) {
        ExampleObject obj1 = new ExampleObject(1, "Test");
        ExampleObject obj2 = new ExampleObject(1, "Test");
        ExampleObject obj3 = new ExampleObject(2, "Another");

        // Uso de equals()
        System.out.println("obj1 equals obj2: " + obj1.equals(obj2)); // true - lógicamente equivalentes
        System.out.println("obj1 equals obj3: " + obj1.equals(obj3)); // false - objetos diferentes

        // Uso de toString()
        System.out.println("obj1 toString(): " + obj1.toString()); // Mostrará la representación en cadena del objeto
    }
}