Sobes.tech
Junior

Методҳои equals() ва toString() дар Java барои чӣ истифода мешаванд?

sobes.tech AI

Ҷавоб аз AI

Метод equals() истифода мешавад барои муқоиса кардани объектҳо дар маънои баробарии логикӣ, яъне муайян мекунад, ки оё ду объект арзиши ё шахсияти якхеларо намояндагӣ мекунанд, новобаста аз он ки онҳо дар хотира объектҳои физикӣ ҳастанд ё не.

Метод toString() барои гирифтани намоиши сатрии объект истифода мешавад. Ба таври пешфарз, он сатреро бармегардонад, ки номи синф ва коди hash-ро дар бар мегирад, аммо аксар вақт онро барқарор мекунанд, то тавсифи бештар дар бораи ҳолати объект пешниҳод кунанд.

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; // Муқоиса кардани ишораҳо
        if (o == null || getClass() != o.getClass()) return false; // Санҷиши навъ ва null
        ExampleObject that = (ExampleObject) o; // Табдили навъ
        return id == that.id && // Муқоиса кардани майдонҳои муҳим
               name.equals(that.name);
    }

    @Override
    public int hashCode() {
        // Барқарор кардани hashCode ҳатмӣ аст, вақте ки 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");

        // Истифодаи equals()
        System.out.println("obj1 equals obj2: " + obj1.equals(obj2)); // true - мантиқӣ баробар
        System.out.println("obj1 equals obj3: " + obj1.equals(obj3)); // false - объектҳои гуногун

        // Истифодаи toString()
        System.out.println("obj1 toString(): " + obj1.toString()); // Намояндаии сатрии объектро нишон медиҳад
    }
}