Objekt třída je přítomna v java.lang balík. Každá třída v Javě je přímo nebo nepřímo odvozena od Objekt třída. Pokud třída nerozšiřuje žádnou jinou třídu, pak je přímo podřízenou třídou Objekt a pokud rozšiřuje další třídu, pak je nepřímo odvozena. Proto jsou metody třídy Object dostupné pro všechny třídy Java. Třída Object tedy funguje jako kořen hierarchie dědičnosti v jakémkoli programu Java.

Použití metod tříd objektů
Třída Object poskytuje několik metod, které jsou následující:
- metoda toString().
- metoda hashCode().
- metoda equals(Object obj).
- metoda finalize().
- metoda getClass().
- metoda clone().
- metody wait(), notify() notifyAll().
1. metoda toString().
ToString() poskytuje String reprezentaci objektu a používá se k převodu objektu na String. Výchozí metoda toString() pro třídu Object vrací řetězec sestávající z názvu třídy, jejíž je objekt instancí, znaku zavináče `@‘ a hexadecimální reprezentace hash kódu bez znaménka. Jinými slovy, je definován jako:
// Default behavior of toString() is to print class name, then // @, then unsigned hexadecimal representation of the hash code // of the object public String toString() { return getClass().getName() + '@' + Integer.toHexString(hashCode()); }> Vždy se doporučuje přepsat toString() metoda k získání naší vlastní Stringové reprezentace objektu. Další informace o přepsání metody toString() viz – Přepsání toString() v Javě
Poznámka: Kdykoli se pokusíme vytisknout jakoukoli referenci na objekt, pak se interně zavolá metoda toString().
Student s = new Student(); // Below two statements are equivalent System.out.println(s); System.out.println(s.toString());>
2. metoda hashCode().
Pro každý objekt JVM generuje jedinečné číslo, které je hashcode. Vrací odlišná celá čísla pro odlišné objekty. Obvyklá mylná představa o této metodě je, že metoda hashCode() vrací adresu objektu, což není správné. Převádí vnitřní adresu objektu na celé číslo pomocí algoritmu. Metoda hashCode() je rodák protože v Javě je nemožné najít adresu objektu, takže k nalezení adresy objektu používá nativní jazyky jako C/C++.
Použití metody hashCode().
Vrací hodnotu hash, která se používá k vyhledávání objektů v kolekci. JVM (Java Virtual Machine) používá metodu hashcode při ukládání objektů do datových struktur souvisejících s hashováním, jako je HashSet, HashMap, Hashtable atd. Hlavní výhodou ukládání objektů na základě hash kódu je snadné vyhledávání.
Poznámka: Přepsat z hashCode() metoda musí být provedena tak, že pro každý objekt vygenerujeme jedinečné číslo. Například pro třídu Student můžeme vrátit číslo role. studenta z metody hashCode(), protože je jedinečná.
Jáva
// Java program to demonstrate working of> // hashCode() and toString()> public> class> Student {> >static> int> last_roll =>100>;> >int> roll_no;> >// Constructor> >Student()> >{> >roll_no = last_roll;> >last_roll++;> >}> >// Overriding hashCode()> >@Override> public> int> hashCode() {>return> roll_no; }> >// Driver code> >public> static> void> main(String args[])> >{> >Student s =>new> Student();> >// Below two statements are equivalent> >System.out.println(s);> >System.out.println(s.toString());> >}> }> |
>
>
Výstup :
Student@64 Student@64>
Všimněte si, že 4*160+ 6*161= 100
testování a typy testování
3. metoda rovná se (Object obj).
Porovná daný objekt s tímto objektem (objektem, na kterém je metoda volána). Poskytuje obecný způsob, jak porovnávat objekty z hlediska rovnosti. Doporučuje se přepsat rovná se (objekt objektu) způsob, jak získat vlastní podmínku rovnosti na objektech. Další informace o metodě přepsání rovná se (Object obj) viz – Přepsání se rovná metodě v Javě
Poznámka: Obecně je nutné přepsat hashCode() vždy, když je tato metoda přepsána, aby byla zachována obecná smlouva pro metodu hashCode, která říká, že stejné objekty musí mít stejné hash kódy.
4. metoda getClass().
Vrací objekt třídy tohoto objektu a používá se k získání skutečné runtime třídy objektu. Lze jej také použít k získání metadat této třídy. Vrácený objekt Class je objekt, který je uzamčen statickými synchronizovanými metodami reprezentované třídy. Protože je konečný, nepřepisujeme ho.
Jáva
// Java program to demonstrate working of getClass()> public> class> Test {> >public> static> void> main(String[] args)> >{> >Object obj =>new> String(>'GeeksForGeeks'>);> >Class c = obj.getClass();> >System.out.println(>'Class of Object obj is : '> >+ c.getName());> >}> }> |
>
>
Výstup:
Class of Object obj is : java.lang.String>
Poznámka: Po načtení souboru .class vytvoří JVM objekt tohoto typu java.lang.Class v oblasti haldy. Tento objekt třídy můžeme použít k získání informací na úrovni třídy. Je široce používán v Odraz
5. metoda finalize().
Tato metoda je volána těsně předtím, než je objekt shromažďován. Říká se tomu Popelář na objektu, když garbage collector určí, že na objekt již nejsou žádné odkazy. Měli bychom přepsat metodu finalize(), abychom se zbavovali systémových prostředků, prováděli činnosti čištění a minimalizovali úniky paměti. Například před zničením webového kontejneru objektů Servlet, který se vždy nazývá metoda finalizace k provedení činností čištění relace.
Poznámka: Metoda finalizace se nazývá just jednou na objektu, i když je tento objekt způsobilý pro úklid vícekrát.
Jáva
žádný vstupní signál
// Java program to demonstrate working of finalize()> public> class> Test {> >public> static> void> main(String[] args)> >{> >Test t =>new> Test();> >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'>);> >}> }> |
>
>
Výstup:
1510467688 finalize method called end>
6. metoda clone().
Vrátí nový objekt, který je přesně stejný jako tento objekt. Pro metodu clone() viz Klonovat() .
Zbývající tři metody Počkejte() , oznámit() notifyAll() souvisí s Concurrency. Odkazují na Komunikace mezi vlákny v Javě pro detaily.
Příklad použití všech metod třídy Object v Javě
Jáva
lev ve srovnání s tygrem
import> java.io.*;> public> class> Book>implements> Cloneable {> >private> String title;> >private> String author;> >private> int> year;> >public> Book(String title, String author,>int> year)> >{> >this>.title = title;> >this>.author = author;> >this>.year = year;> >}> >// Override the toString method> >@Override> public> String toString()> >{> >return> title +>' by '> + author +>' ('> + year +>')'>;> >}> >// Override the equals method> >@Override> public> boolean> equals(Object obj)> >{> >if> (obj ==>null> || !(obj>instanceof> Book)) {> >return> false>;> >}> >Book other = (Book)obj;> >return> this>.title.equals(other.getTitle())> >&&>this>.author.equals(other.getAuthor())> >&&>this>.year == other.getYear();> >}> >// Override the hashCode method> >@Override> public> int> hashCode()> >{> >int> result =>17>;> >result =>31> * result + title.hashCode();> >result =>31> * result + author.hashCode();> >result =>31> * result + year;> >return> result;> >}> >// 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> title; }> >public> String getAuthor() {>return> author; }> >public> int> getYear() {>return> year; }> >public> static> void> main(String[] args)> >{> >// Create a Book object and print its details> >Book book1 =>new> Book(> >'The Hitchhiker's Guide to the Galaxy'>,> >'Douglas Adams'>,>1979>);> >System.out.println(book1);> >// Create a clone of the Book object and print its> >// details> >Book book2 = book1.clone();> >System.out.println(book2);> >// Check if the two objects are equal> >System.out.println(>'book1 equals book2: '> >+ book1.equals(book2));> >// Get the hash code of the two objects> >System.out.println(>'book1 hash code: '> >+ book1.hashCode());> >System.out.println(>'book2 hash code: '> >+ book2.hashCode());> >// Set book1 to null to trigger garbage collection> >// and finalize method> >book1 =>null>;> >System.gc();> >}> }> |
>
>Výstup
The Hitchhiker's Guide to the Galaxy by Douglas Adams (1979) The Hitchhiker's Guide to the Galaxy by Douglas Adams (1979) book1 equals book2: true book1 hash code: 1840214527 book2 hash code: 1840214527>