Clasa de obiecte în Java este prezent în java.lang pachet.
inurl:.git/head
- Fiecare clasă este derivată direct sau indirect din clasa Object. Dacă o clasă nu extinde nicio altă clasă, atunci este o clasă secundară directă a lui Clasa obiect Java iar dacă extinde o altă clasă atunci este derivată indirect.
- Clasa Object oferă mai multe metode, cum ar fi toString()equals() hashCode() si multi altii.
- Clasa Object acționează ca o rădăcină a ierarhiei de moștenire în orice program Java.
Aici folosim toString() şi hashCode() metodele clasei Object pentru a oferi o reprezentare de șir personalizată pentru o clasă .
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()); } }
Ieșire
Person{name:'Geek'} 321001045 Explicaţie: În exemplul de mai sus suprascriem toString() metoda de a oferi a reprezentarea șir personalizată a clasei Person și folosiți hashCode() metodă pentru a afișa valoarea implicită a codului hash a obiectului.
Metode de clasă de obiecte
Clasa Object oferă mai multe metode, care sunt după cum urmează:
- metoda toString().
- metoda hashCode().
- metoda equals(Object obj).
- metoda finalize().
- metoda getClass().
- metoda clone().
- wait() notify() notifyAll() (Metode de concurență)

1. Metoda toString().
The toString() oferă o reprezentare String a unui obiect și este folosit pentru a converti un obiect într-un String. Metoda implicită toString() pentru clasa Object returnează un șir format din numele clasei a cărei obiect este o instanță, caracterul at-sign „@” și reprezentarea hexazecimală nesemnată a codului hash al obiectului.
Nota: Ori de câte ori încercăm să tipărim orice referință de obiect, atunci intern metoda toString() este apelată.
Exemplu:
elev la clasă publică {
public String toString() {
returnează „Obiect student”;
}
}
Explicaţie: Metoda toString() este suprascrisă pentru a returna o reprezentare șir personalizată a obiectului Student.
2. Metoda hashCode().
Pentru fiecare obiect JVM generează un număr unic care este un cod hash. Returnează numere întregi distincte pentru obiecte distincte. O concepție greșită comună despre această metodă este că metoda hashCode() returnează adresa obiectului care nu este corectă. Convertește adresa internă a obiectului într-un număr întreg utilizând un algoritm. Metoda hashCode() este nativ deoarece în Java este imposibil să găsești adresa unui obiect, așa că folosește limbaje native precum C/C++ pentru a găsi adresa obiectului.
Utilizarea metodei hashCode():
Returnează o valoare hash care este folosită pentru a căuta obiecte dintr-o colecție. JVM (Java Virtual Machine) folosește metoda hashcode în timp ce salvează obiecte în structuri de date legate de hashing, cum ar fi HashSet HashMap Hashtable etc. Principalul avantaj al salvării obiectelor bazate pe cod hash este că căutarea devine ușoară.
Nota: Anulare a hashCode() metoda trebuie făcută astfel încât pentru fiecare obiect să generăm un număr unic. De exemplu, pentru o clasă Studenți putem returna lista nr. a unui student din metoda hashCode() deoarece este unică.
Exemplu:
elev la clasă publică {
rola int;
@Override
public int hashCode() {
rola de retur;
}
}
Explicaţie: The hashCode() metoda este suprascrisă pentru a returna o valoare hash personalizată bazată pe rola obiectului Student.
3. equals(Object obj) Metoda
The este egal() metoda compară obiectul dat cu obiectul curent. Se recomandă să anulați această metodă pentru a defini condițiile de egalitate personalizate.
Nota: În general, este necesar să se suprascrie hashCode() metoda ori de câte ori această metodă este suprascrisă pentru a menține contractul general pentru metoda hashCode care afirmă că obiectele egale trebuie să aibă coduri hash egale.
Exemplu:
elev la clasă publică {
rola int;
@Override
public boolean equals(Object o) {
dacă (o instanță de Student) {
returnează aceasta.roll == ((Student) o).roll;
}
returnează fals;
}
}
Explicaţie: The este egal() metoda este înlocuită pentru a compara rostogolire între două obiecte Student.
4. metoda getClass().
The getClass() returnează obiectul de clasă al obiectului „acest” și este folosită pentru a obține clasa reală de rulare a obiectului. Poate fi folosit și pentru a obține metadatele acestei clase. Obiectul Class returnat este obiectul care este blocat prin metode statice sincronizate ale clasei reprezentate. Deoarece este final, nu îl depășim.
Exemplu:
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()); } }
Ieșire
Class of Object o is: java.lang.String
Explicaţie: The getClass() metoda este folosită pentru a tipări clasa de rulare a obiectului „o”.
Nota: După încărcarea unui fișier .class, JVM va crea un obiect de acest tip java.lang.Class în zona Heap. Putem folosi acest obiect de clasă pentru a obține informații la nivel de clasă. Este utilizat pe scară largă în Reflecţie
5. metoda finalize().
The finaliza () metoda este apelată chiar înainte ca un obiect să fie colectat gunoiul. Se numește Colector de gunoi pe un obiect atunci când colectorul de gunoi stabilește că nu mai există referințe la obiect. Ar trebui să suprascriem metoda finalize() pentru a elimina resursele sistemului, pentru a efectua activități de curățare și pentru a minimiza pierderile de memorie. De exemplu, înainte de a distruge containerul web de obiecte Servlet numit întotdeauna metoda finalize pentru a efectua activități de curățare a sesiunii.
Nota: Metoda de finalizare se numește just dată pe un obiect, chiar dacă acel obiect este eligibil pentru colectarea gunoiului de mai multe ori.
Exemplu:
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'); } }
Ieșire
1510467688 end finalize method called
Explicaţie: The finaliza () metoda este apelată chiar înainte ca obiectul să fie colectat gunoiul.
6. metoda clone().
The clona() metoda creează și returnează un nou obiect care este o copie a obiectului curent.
Exemplu:
implementări de cărți de clasă publică Cloneable {
private String t; //titlu
carte publică (șir t) {
aceasta.t = t;
}
@Override
public Object clone() aruncă CloneNotSupportedException {
return super.clone();
}
}
Explicaţie: The clona() metoda este suprascrisă pentru a returna o copie clonată a fișierului Obiect de carte .
7. Metode de concurență: wait() notify() și notifyAll()
Aceste metode sunt legate de thread Comunicare în Java . Ele sunt folosite pentru a face firele să aștepte sau să notifice pe alții în programarea concomitentă.
Exemplu de utilizare a tuturor metodelor clasei de obiecte în 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(); } }
Ieșire
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
Explicaţie: Exemplul de mai sus demonstrează utilizarea lui toString() equals() hashCode() şi clona() metode în Clasa de carte .