Objektiluokka Javassa

Objektiluokka Javassa

Objektiluokka Javassa on läsnä java.lang paketti.

  • Jokainen luokka on suoraan tai epäsuorasti johdettu Object-luokasta. Jos luokka ei laajenna mitään muuta luokkaa, se on ryhmän suora aliluokka Java-objektiluokka ja jos se laajentaa toista luokkaa, se on epäsuorasti johdettu.
  • Object-luokka tarjoaa useita menetelmiä, kuten toString()equals() hashCode() ja monet muut.
  • Object-luokka toimii perintöhierarkian juurena kaikissa Java-ohjelmissa.

Tässä käytämme toString() ja hashCode() Object-luokan menetelmät tarjota mukautettu merkkijonoesitys luokalle .

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

Lähtö
Person{name:'Geek'} 321001045  

Selitys: Yllä olevassa esimerkissä ohitamme toString() tapa tarjota a Person-luokan mukautettu merkkijonoesitys ja käytä hashCode() menetelmä objektin oletushajakoodiarvon näyttämiseksi.

Objektiluokan menetelmät

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() (Samanaikaisuusmenetelmät)
Object Class Methods Javassa

1. toString()-menetelmä

The toString() tarjoaa objektin merkkijonoesityksen ja sitä käytetään muuntamaan objekti merkkijonoksi. Luokan Object oletusmenetelmä toString() palauttaa merkkijonon, joka koostuu sen luokan nimestä, jonka esiintymä objekti on, at-merkkimerkistä `@' ja objektin hajakoodin etumerkittömästä heksadesimaalimuodosta.

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

Esimerkki:

julkinen luokka Opiskelija {

public String toString() {

return 'Opiskelijaobjekti';

}

}

Selitys: ToString()-metodi ohitetaan palauttamaan Student-objektin mukautettu merkkijonoesitys.

2. hashCode() -menetelmä

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 kohteen osoitteen, joka ei ole oikea. 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.

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 perustuvien objektien tallentamisen tärkein etu on, että hausta tulee helppoa. 

Huomautus: Ohitus hashCode() 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. 

Esimerkki:

julkinen luokka Opiskelija {

int roll;

@Ohittaa

public int hashCode() {

paluurulla;

}

}

Selitys: The hashCode() menetelmä ohitetaan palauttamaan mukautettu hash-arvo Student-objektin rullauksen perusteella.

3. on yhtä kuin (Object obj) Method

The on yhtä suuri () menetelmä vertaa annettua objektia nykyiseen objektiin. On suositeltavaa ohittaa tämä menetelmä mukautettujen tasa-arvoehtojen määrittämiseksi.

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

Esimerkki:

julkinen luokka Opiskelija {

int roll;


@Ohittaa

julkinen boolean on yhtä kuin(Object o) {

if (o instanceof Student) {

return this.roll == ((Opiskelija) o).roll;

}

palauttaa väärä;

}

}

Selitys: The on yhtä suuri () menetelmä ohitetaan vertailtaessa rullaa kahden opiskelijaobjektin välillä.

4. getClass()-metodi

The getClass() menetelmä 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ä.

Esimerkki:

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

Lähtö
Class of Object o is: java.lang.String  

Selitys: The getClass() menetelmää käytetään o-objektin ajonaikaisen luokan tulostamiseen.

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

5. finalize()-menetelmä

The viimeistellä () menetelmää kutsutaan juuri ennen kuin objekti kerätään roskat. Sitä kutsutaan nimellä Roskien kerääjä objektissa, kun roskankerääjä toteaa, ettei objektiin ole enää viittauksia. Meidän tulee ohittaa finalize()-menetelmä, jotta järjestelmäresurssit voidaan hävittää, jotta voimme suorittaa puhdistustoimia ja minimoida muistivuotoja. Esimerkiksi ennen Servlet-objektien verkkosäiliön tuhoamista kutsutaan aina finalize-menetelmäksi istunnon puhdistustoimintojen suorittamiseksi. 

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

Esimerkki:

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

Lähtö
1510467688 end finalize method called  

Selitys: The viimeistellä () menetelmää kutsutaan juuri ennen kuin objekti kerätään roskat.

6. clone()-menetelmä 

The klooni() menetelmä luo ja palauttaa uuden objektin, joka on kopio nykyisestä objektista.

Esimerkki:

public class Kirjatyökalut Kloonattava {

yksityinen merkkijono; //otsikko


julkinen kirja(merkkijono t) {

this.t = t;

}

@Ohittaa

public Object clone() heittää CloneNotSupportedException {

return super.clone();

}

}

Selitys: The klooni() -menetelmä ohitetaan palauttamaan kloonattu kopio Kirja esine .

7. Samanaikaisuusmenetelmät: odota() notify() ja notifyAll()

Nämä menetelmät liittyvät viestiketju Javassa . Niitä käytetään saamaan säikeet odottamaan tai ilmoittamaan muille samanaikaisessa ohjelmoinnissa.

Esimerkki kaikkien objektiluokkamenetelmien käytöstä Javassa

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

Lähtö
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  

Selitys: Yllä oleva esimerkki osoittaa käytön toString() equals() hashCode() ja klooni() menetelmät Kirja luokka .