logo

Objektiluokka Javassa

Esine luokka on läsnä java.lang paketti. Jokainen Java-luokka on suoraan tai epäsuorasti johdettu Esine luokkaa. Jos luokka ei laajenna mitään muuta luokkaa, se on suora aliluokka Esine ja jos laajentaa toista luokkaa, se on epäsuorasti johdettu. Siksi Object-luokan menetelmät ovat kaikkien Java-luokkien käytettävissä. Siksi Object-luokka toimii perintöhierarkian juurena missä tahansa Java-ohjelmassa.

Objektiluokka Javassa

Objektiluokkamenetelmien käyttäminen

Object-luokka tarjoaa useita menetelmiä, jotka ovat seuraavat:



  • toString()-metodi
  • hashCode() -menetelmä
  • equals(Object obj) -metodi
  • finalize() -menetelmä
  • getClass() -menetelmä
  • klooni() -menetelmä
  • odota(), notify() notifyAll()-metodit

1. toString()-metodi

ToString() tarjoaa objektin merkkijonoesityksen, ja sitä käytetään muuntamaan objekti merkkijonoksi. Luokan Object oletusarvoinen toString()-metodi palauttaa merkkijonon, joka koostuu sen luokan nimestä, jonka esiintymä objekti on, at-merkkimerkistä `@' ja objektin hajakoodin etumerkittömästä heksadesimaalimuodosta. Toisin sanoen se määritellään seuraavasti:

// 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()); }>

On aina suositeltavaa ohittaa toString() menetelmä saada oma merkkijonoesitys objektista. Katso lisätietoja toString()-metodin ohittamisesta - ToString():n ohittaminen Javassa

Huomautus: Aina kun yritämme tulostaa minkä tahansa objektiviittauksen, kutsutaan sisäisesti toString()-menetelmää.

Student s = new Student();  // Below two statements are equivalent System.out.println(s); System.out.println(s.toString());>

2. hashCode()-metodi

Jokaiselle objektille JVM luo yksilöllisen numeron, joka on hashcode. Se palauttaa erilliset kokonaisluvut erillisille objekteille. Yleinen väärinkäsitys tästä menetelmästä on, että hashCode()-metodi palauttaa objektin osoitteen, mikä ei ole oikein. Se muuntaa objektin sisäisen osoitteen kokonaisluvuksi algoritmin avulla. HashCode()-menetelmä on syntyperäinen koska Javassa on mahdotonta löytää objektin osoitetta, joten se käyttää alkuperäisiä kieliä, kuten C/C++, löytääkseen objektin osoitteen.

img css align

HashCode()-menetelmän käyttö

Se palauttaa hash-arvon, jota käytetään kokoelman kohteiden etsimiseen. JVM (Java Virtual Machine) käyttää hashcode-menetelmää tallentaessaan objekteja tiivistykseen liittyviin tietorakenteisiin, kuten HashSet, HashMap, Hashtable jne. Hash-koodiin perustuvan objektien tallentamisen tärkein etu on, että hausta tulee helppoa.

Huomautus: Ohitus hash koodin() menetelmä on tehtävä siten, että jokaiselle objektille luodaan yksilöllinen numero. Esimerkiksi opiskelijaluokalle voimme palauttaa rullan nro. opiskelijan hashCode()-menetelmästä, koska se on ainutlaatuinen.

Java




// 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());> >}> }>

kromi osoitepalkki

>

>

Lähtö:

Student@64 Student@64>

Huomaa, että 4*160+ 6*161= 100

3. equals(Object obj) -metodi

Se vertaa annettua objektia tähän objektiin (olioon, johon menetelmää kutsutaan). Se antaa yleisen tavan vertailla objekteja tasa-arvoa varten. On suositeltavaa ohittaa yhtä kuin (objektiobjekti) tapa saada oma tasa-arvoehtomme esineille. Lisätietoja yhtäläisten (Object obj) -menetelmän ohittamisesta on kohdassa - Overriding equals -menetelmä Javassa

Huomautus: Yleensä on välttämätöntä ohittaa hash koodin() -menetelmää aina, kun tämä menetelmä ohitetaan, jotta säilytetään yleissopimus hashCode-menetelmälle, jonka mukaan samoilla objekteilla on oltava samat hash-koodit.

4. getClass()-metodi

Se palauttaa tämän objektin luokkaobjektin ja sitä käytetään saamaan objektin todellinen ajonaikainen luokka. Sitä voidaan käyttää myös tämän luokan metatietojen hankkimiseen. Palautettu luokkaobjekti on objekti, joka on lukittu esitetyn luokan staattisilla synkronoiduilla menetelmillä. Koska se on lopullinen, emme ohita sitä.

Java




// 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());> >}> }>

>

>

Lähtö:

Class of Object obj is : java.lang.String>

Huomautus: Ladattuaan .class-tiedoston, JVM luo objektin tyyppiä java.lang.Class Kasan alueella. Voimme käyttää tätä luokkaobjektia luokkatason tietojen saamiseksi. Sitä käytetään laajasti Heijastus

kuinka monta kaupunkia usa

5. finalize()-menetelmä

Tätä menetelmää kutsutaan juuri ennen kuin objekti kerätään roskat. Sitä kutsutaan nimellä Roskankerääjä objektissa, kun roskankerääjä toteaa, ettei objektiin ole enää viittauksia. Meidän tulee ohittaa finalize()-menetelmä järjestelmäresurssien hävittämiseksi, puhdistustoimenpiteiden suorittamiseksi ja muistivuotojen minimoimiseksi. Esimerkiksi ennen Servlet-objektien verkkosäiliön tuhoamista kutsutaan aina viimeistelymenetelmäksi istunnon puhdistustoimintojen suorittamiseksi.

Huomautus: Viimeistelymenetelmää kutsutaan vain kerran objektiin, vaikka se olisi kelvollinen roskienkeräykseen useita kertoja.

Java




// 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'>);> >}> }>

>

>

java päivämäärä ajan tasalla

Lähtö:

1510467688 finalize method called end>

6. clone()-menetelmä

Se palauttaa uuden objektin, joka on täsmälleen sama kuin tämä objekti. Katso klooni()-menetelmästä Klooni() .

Loput kolme menetelmää odota() , ilmoittaa() ilmoita kaikille() liittyvät samanaikaisuuteen. Viitata Säikeiden välinen viestintä Javassa yksityiskohtia varten.

Esimerkki kaikkien Object-luokan menetelmien käytöstä Javassa

Java




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();> >}> }>

>

java cast int merkkijonoon

>

Lähtö

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>