Клас об'єкта в Java присутній в java.lang пакет.
амплітудна модуляція
- Кожен клас прямо чи опосередковано є похідним від класу Object. Якщо клас не розширює жодного іншого класу, то він є прямим дочірнім класом Клас об'єктів Java і якщо він розширює інший клас, то він є опосередковано похідним.
- Клас Object надає кілька методів, наприклад toString()equals() hashCode() та багато інших.
- Клас Object діє як корінь ієрархії успадкування в будь-якій програмі Java.
Тут ми використовуємо toString() і hashCode() методи класу Object щоб забезпечити спеціальне представлення рядка для класу .
Java
// Java Code to demonstrate Object class class Person { String n; //name // Constructor public Person(String n) { this.n = n; } // Override toString() for a // custom string representation @Override public String toString() { return 'Person{name:'' + n + ''}'; } public static void main(String[] args) { Person p = new Person('Geek'); // Custom string representation System.out.println(p.toString()); // Default hash code value System.out.println(p.hashCode()); } }
Вихід
Person{name:'Geek'} 321001045 Пояснення: У наведеному вище прикладі ми замінюємо toString() метод надання a настроюване рядкове представлення класу Person і використовуйте hashCode() метод для відображення значення хеш-коду об’єкта за замовчуванням.
Методи класу об’єктів
Клас Object надає декілька таких методів:
- метод toString().
- метод hashCode().
- метод equals(Object obj).
- метод finalize().
- метод getClass().
- метод clone().
- wait() notify() notifyAll() (методи паралелізму)

1. Метод toString().
The toString() забезпечує рядкове представлення об’єкта та використовується для перетворення об’єкта на рядок. Метод toString() за замовчуванням для класу Object повертає рядок, що складається з назви класу, екземпляром якого є об’єкт, символу @ та шістнадцяткового представлення хеш-коду об’єкта без знаку.
Примітка: Щоразу, коли ми намагаємося надрукувати будь-яке посилання на об’єкт, викликається внутрішній метод toString().
приклад:
публічний клас Студент {
public String toString() {
повернути 'Об'єкт студента';
}
}
Пояснення: Метод toString() перевизначено, щоб повернути настроюване рядкове представлення об’єкта Student.
2. Метод hashCode().
Для кожного об’єкта JVM генерує унікальний номер, який є хеш-кодом. Він повертає різні цілі числа для різних об’єктів. Поширеною помилкою щодо цього методу є те, що метод hashCode() повертає адресу об’єкта, яка є неправильною. Він перетворює внутрішню адресу об’єкта в ціле число за допомогою алгоритму. Метод hashCode() є рідний оскільки в Java неможливо знайти адресу об’єкта, тому для пошуку адреси об’єкта використовуються рідні мови, такі як C/C++.
Використання методу hashCode():
Він повертає хеш-значення, яке використовується для пошуку об’єктів у колекції. JVM (Віртуальна машина Java) використовує метод хеш-коду під час збереження об’єктів у структурах даних, пов’язаних із хешуванням, як-от HashSet HashMap Hashtable тощо. Основна перевага збереження об’єктів на основі хеш-коду полягає в тому, що пошук стає легким.
Примітка: Перевизначити hashCode() метод потрібно зробити так, щоб для кожного об’єкта ми генерували унікальний номер. Наприклад, для класу студентів ми можемо повернути номер рулону. студента з методу hashCode(), оскільки він унікальний.
приклад:
публічний клас Студент {
int roll;
@Override
public int hashCode() {
зворотний рулон;
}
}
Пояснення: The hashCode() метод перевизначено, щоб повернути спеціальне хеш-значення на основі перекату об’єкта Student.
3. Метод дорівнює (Object obj).
The дорівнює() метод порівнює даний об'єкт з поточним об'єктом. Рекомендується замінити цей метод, щоб визначити власні умови рівності.
Примітка: Зазвичай необхідно перевизначати hashCode() кожного разу, коли цей метод перевизначається, щоб підтримувати загальний контракт для методу hashCode, який стверджує, що однакові об’єкти повинні мати однакові хеш-коди.
приклад:
публічний клас Студент {
int roll;
@Override
public boolean equals(Object o) {
if (примірник Student) {
return this.roll == ((Студент) o).roll;
}
повернути false;
}
}
Пояснення: The дорівнює() метод перевизначено для порівняння рол між двома об’єктами Student.
4. метод getClass().
The getClass() метод повертає об’єкт класу об’єкта «this» і використовується для отримання фактичного класу часу виконання об’єкта. Його також можна використовувати для отримання метаданих цього класу. Повернений об’єкт Class — це об’єкт, який заблоковано статичними синхронізованими методами представленого класу. Оскільки він остаточний, тому ми не скасовуємо його.
приклад:
Java// Demonstrate working of getClass() public class Geeks { public static void main(String[] args) { Object o = new String('GeeksForGeeks'); Class c = o.getClass(); System.out.println('Class of Object o is: ' + c.getName()); } }
Вихід
Class of Object o is: java.lang.String
Пояснення: The getClass() метод використовується для друку класу часу виконання об'єкта 'o'.
Примітка: Після завантаження файлу .class JVM створить об’єкт типу java.lang.Class в районі Купи. Ми можемо використовувати цей об’єкт класу для отримання інформації про рівень класу. Він широко використовується в Рефлексія
5. метод finalize().
The завершити() метод викликається безпосередньо перед тим, як об’єкт збирається як сміття. Це називається Збирач сміття на об’єкті, коли збирач сміття визначає, що більше немає посилань на об’єкт. Ми повинні перевизначити метод finalize(), щоб позбутися системних ресурсів, виконати дії з очищення та мінімізувати витоки пам’яті. Наприклад, перед знищенням веб-контейнера об’єктів Servlet завжди викликається метод finalize для виконання дій з очищення сеансу.
Примітка: Метод finalize називається просто один раз на об’єкт, навіть якщо цей об’єкт придатний для збирання сміття кілька разів.
приклад:
Java// Demonstrate working of finalize() public class Geeks { public static void main(String[] args) { Geeks t = new Geeks(); System.out.println(t.hashCode()); t = null; // calling garbage collector System.gc(); System.out.println('end'); } @Override protected void finalize() { System.out.println('finalize method called'); } }
Вихід
1510467688 end finalize method called
Пояснення: The завершити() метод викликається безпосередньо перед тим, як об’єкт збирається сміттям.
6. метод clone().
The клонувати() метод створює та повертає новий об’єкт, який є копією поточного об’єкта.
приклад:
публічний клас Book реалізує Cloneable {
приватний рядок t; //заголовок
public Book(String t) {
this.t = t;
}
@Override
public Object clone() кидає CloneNotSupportedException {
повернути super.clone();
}
}
Пояснення: The клонувати() метод перевизначено для повернення клонованої копії Книжковий об'єкт .
7. Методи паралелізму: wait() notify() і notifyAll()
Ці методи пов'язані з потокове спілкування в Java . Вони використовуються, щоб змусити потоки чекати або сповістити інших у паралельному програмуванні.
Приклад використання всіх методів класу об’єктів у Java
Javaimport java.io.*; public class Book implements Cloneable { private String t; // title private String a; // author private int y; // year public Book(String t String a int y) { this.t = t; this.a = a; this.y = y; } // Override the toString method @Override public String toString() { return t + ' by ' + a + ' (' + y + ')'; } // Override the equals method @Override public boolean equals(Object o) { if (o == null || !(o instanceof Book)) { return false; } Book other = (Book)o; return this.t.equals(other.getTitle()) && this.a.equals(other.getAuthor()) && this.y == other.getYear(); } // Override the hashCode method @Override public int hashCode() { int res = 17; res = 31 * res + t.hashCode(); res = 31 * res + a.hashCode(); res = 31 * res + y; return res; } // Override the clone method @Override public Book clone() { try { return (Book)super.clone(); } catch (CloneNotSupportedException e) { throw new AssertionError(); } } // Override the finalize method @Override protected void finalize() throws Throwable { System.out.println('Finalizing ' + this); } public String getTitle() { return t; } public String getAuthor() { return a; } public int getYear() { return y; } public static void main(String[] args) { // Create a Book object and print its details Book b1 = new Book( 'The Hitchhiker's Guide to the Galaxy' 'Douglas Adams' 1979); System.out.println(b1); // Create a clone of the Book object and print its // details Book b2 = b1.clone(); System.out.println(b2); // Check if the two objects are equal System.out.println('b1 equals b2: ' + b1.equals(b2)); // Get the hash code of the two objects System.out.println('b1 hash code: ' + b1.hashCode()); System.out.println('b2 hash code: ' + b2.hashCode()); // Set book1 to null to trigger garbage collection // and finalize method b1 = null; System.gc(); } }
Вихід
The Hitchhiker's Guide to the Galaxy by Douglas Adams (1979) The Hitchhiker's Guide to the Galaxy by Douglas Adams (1979) b1 equals b2: true b1 hash code: 1840214527 b2 hash code: 1840214527
Пояснення: Наведений вище приклад демонструє використання toString() дорівнює() hashCode() і клонувати() методи в Книжковий клас .