tgoop.com/easy_java_ru/1954
Create:
Last Update:
Last Update:
В Java класс Object является базовым родителем для всех классов. Это значит, что любые классы в Java неявно наследуются от него, если явно не указан другой родительский класс. От класса Object каждый класс в Java получает набор методов. toString()
Что делает: Возвращает строковое представление объекта.
Зачем нужен: Этот метод часто используется для вывода объектов в человекочитаемом виде, особенно для отладки или логирования.
Как работает по умолчанию: Возвращает строку, включающую имя класса и хэш-код объекта (неинтуитивно для человека).
Как переопределить: Обычно переопределяют, чтобы возвращать содержимое полей объекта в удобном формате.
class Person {
String name;
int age;
Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person{name='" + name + "', age=" + age + "}";
}
}
public class Main {
public static void main(String[] args) {
Person person = new Person("Анна", 25);
System.out.println(person.toString()); // Person{name='Анна', age=25}
}
}equals(Object obj)Что делает: Проверяет, равны ли два объекта.
Зачем нужен: Сравнивать два объекта на логическое равенство (например, у вас есть два объекта типа Person и вы хотите понять, одинаковые ли у них значения полей).
Как работает по умолчанию: Сравнивает ссылки объектов (т.е. проверяет, указывают ли переменные на один и тот же объект в памяти).
Как переопределить: Переопределяют, чтобы сравнивать содержимое объектов (их поля).
class Person {
String name;
int age;
Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Person person = (Person) obj;
return age == person.age && name.equals(person.name);
}
}
public class Main {
public static void main(String[] args) {
Person person1 = new Person("Анна", 25);
Person person2 = new Person("Анна", 25);
System.out.println(person1.equals(person2)); // true
}
}hashCode()Что делает: Возвращает числовой хэш-код объекта.
Зачем нужен: Используется для оптимизации работы хэш-структур данных, таких как HashMap, HashSet.
Как работает по умолчанию: Генерирует уникальный хэш-код на основе местоположения объекта в памяти (что не всегда полезно).
Как переопределить: Если переопределён метод equals, обязательно переопределите hashCode, чтобы объекты, которые равны по equals, имели одинаковый хэш-код.
class Person {
String name;
int age;
Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public int hashCode() {
return name.hashCode() + age * 31; // Простая, но эффективная формула
}
}
public class Main {
public static void main(String[] args) {
Person person = new Person("Анна", 25);
System.out.println(person.hashCode()); // Например, 2084975
}
}Ставь 👍 и забирай 📚 Базу знаний
