Sobes.tech
Junior

Javaда equals() жана toString() методдору эмне үчүн колдонулат?

sobes.tech AI

AIден жооп

equals() ыкмасын колдонуу объекттерди логикалык жактан барабар экенин салыштыруу үчүн колдонулат, башкача айтканда, эки объект бирдей мааниге же маңызга ээби же жокпу, аны аныктоо үчүн, алардын физикалык түрдө бирдей болушу маанилүү эмес.

toString() ыкмасы объекттин саптык көрсөтмөсүн алуу үчүн колдонулат. Ал әдетте, класстын аты жана анын хеш-коду менен кайтарат, бирок көбүнчө ал объекттин абалы жөнүндө көбүрөөк маалымат берүү үчүн кайра аныкталат.

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)); // чын - логикалык жактан барабар
        System.out.println("obj1 equals obj3: " + obj1.equals(obj3)); // жалган - ар башка объекттер

        // `toString()` колдонуу
        System.out.println("obj1 toString(): " + obj1.toString()); // Объекттин саптык көрсөтмөсү
    }
}