Sobes.tech
Junior

Java'da equals() va toString() metodlari nima uchun ishlatiladi?

sobes.tech AI

AIdan javob

equals() metodu obyektlərin məntiqi ekvivalentliyini müqayisə etmək üçün istifadə olunur, yəni iki obyektin eyni dəyəri və ya varlığı təmsil etdiyini müəyyən edir, yaddaşda fiziki olaraq eyni obyekt olmalarına baxmayaraq.

toString() metodu obyektin sətir nümayişini almaq üçün istifadə olunur. Varsayılan olaraq, sinif adını və onun hash kodunu ehtiva edən bir sətir qaytarır, lakin çox vaxt obyektin vəziyyəti haqqında daha məlumatlı təsviri təmin etmək üçün yenidən təyin edilir.

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; // Referansların müqayisəsi
        if (o == null || getClass() != o.getClass()) return false; // Növ və null yoxlaması
        ExampleObject that = (ExampleObject) o; // Növün çevrilməsi
        return id == that.id && // Əhəmiyyətli sahələrə görə müqayisə
               name.equals(that.name);
    }

    @Override
    public int hashCode() {
        // equals() metodunu yenidən təyin etdikdə hashCode()-u da yenidən təyin etmək vacibdir
        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");

        // equals() istifadə
        System.out.println("obj1 equals obj2: " + obj1.equals(obj2)); // true - məntiqi olaraq eynidir
        System.out.println("obj1 equals obj3: " + obj1.equals(obj3)); // false - fərqli obyektlər

        // toString() istifadə
        System.out.println("obj1 toString(): " + obj1.toString()); // Obyektin sətir nümayişini göstərəcək
    }
}