Objektklasse i Java

Objektklasse i Java

Objektklasse i Java er til stede i java.lang pakke.

  • Hver klasse er direkte eller indirekte afledt fra Object-klassen. Hvis en klasse ikke udvider nogen anden klasse, er det en direkte underordnet klasse af Java Object klasse og hvis den udvider en anden klasse, er den indirekte afledt.
  • Object-klassen giver flere metoder som f.eks toString()er lig med() hashCode() og mange andre.
  • Object-klassen fungerer som en rod til arvshierarkiet i ethvert Java-program.

Her bruger vi toString() og hashCode() metoder i objektklassen at give en tilpasset strengrepræsentation for en klasse .

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

Produktion
Person{name:'Geek'} 321001045  

Forklaring: I ovenstående eksempel tilsidesætter vi toString() metode til at give en tilpasset strengrepræsentation af Person-klassen og bruge hashCode() metode til at vise standard-hash-kodeværdien for objektet.

Objektklassemetoder

Object-klassen giver flere metoder, som er som følger:

  • toString() metode
  • hashCode() metode
  • equals(Object obj) metode
  • finalize() metode
  • getClass() metode
  • clone() metode
  • wait() notify() notifyAll() (Samtidighedsmetoder)
Objektklassemetoder i Java

1. toString() metode

De toString() giver en strengrepræsentation af et objekt og bruges til at konvertere et objekt til en streng. Standardmetoden toString() for klasse Object returnerer en streng bestående af navnet på den klasse, som objektet er en instans af, at-tegnet tegnet `@' og den usignerede hexadecimale repræsentation af objektets hash-kode.

Note: Når vi prøver at udskrive en objektreference, kaldes internt toString()-metoden.

Eksempel:

offentlig klasse Elev {

public String toString() {

returnere 'Studentobjekt';

}

}

Forklaring: Metoden toString() tilsidesættes for at returnere en tilpasset strengrepræsentation af Student-objektet.

2. hashCode() Metode

For hvert objekt genererer JVM et unikt nummer, som er en hashkode. Det returnerer distinkte heltal for distinkte objekter. En almindelig misforståelse om denne metode er, at hashCode()-metoden returnerer adressen på objektet, som ikke er korrekt. Den konverterer objektets interne adresse til et heltal ved hjælp af en algoritme. hashCode() metoden er hjemmehørende fordi det i Java er umuligt at finde adressen på et objekt, så det bruger indfødte sprog som C/C++ til at finde adressen på objektet.

Brug af hashCode() metode:

Det returnerer en hashværdi, der bruges til at søge efter objekter i en samling. JVM(Java Virtual Machine) bruger hashcode-metoden, mens objekter gemmes i hashing-relaterede datastrukturer som HashSet HashMap Hashtable osv. Den største fordel ved at gemme objekter baseret på hash-kode er, at søgning bliver let. 

Note: Tilsidesættelse af hashCode() metode skal gøres sådan, at vi for hvert objekt genererer et unikt tal. For eksempel for en elevklasse kan vi returnere rullenr. af en elev fra hashCode()-metoden, da den er unik. 

Eksempel:

offentlig klasse Elev {

int rulle;

@Tilsidesæt

public int hashCode() {

rulle tilbage;

}

}

Forklaring: De hashCode() metode tilsidesættes for at returnere en tilpasset hashværdi baseret på rullen af ​​Student-objektet.

3. er lig (Objekt obj) Metode

De er lig med () metoden sammenligner det givne objekt med det aktuelle objekt. Det anbefales at tilsidesætte denne metode for at definere tilpassede lighedsbetingelser.

Note: Det er generelt nødvendigt at tilsidesætte hashCode() metode, når denne metode tilsidesættes for at opretholde den generelle kontrakt for hashCode-metoden, som siger, at lige objekter skal have lige hash-koder. 

Eksempel:

offentlig klasse Elev {

int rulle;


@Tilsidesæt

public boolean lig med(Objekt o) {

if (o instans af elev) {

returnere denne.rulle == ((Student) o).rulle;

}

returnere falsk;

}

}

Forklaring: De er lig med () metode tilsidesættes for at sammenligne rulle mellem to elevobjekter.

4. getClass() metode

De getClass() metoden returnerer klasseobjektet for 'dette' objekt og bruges til at få den faktiske runtime-klasse for objektet. Det kan også bruges til at hente metadata for denne klasse. Det returnerede klasseobjekt er det objekt, der er låst af statisk synkroniserede metoder af den repræsenterede klasse. Da det er endeligt, så tilsidesætter vi det ikke.

Eksempel:

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

Produktion
Class of Object o is: java.lang.String  

Forklaring: De getClass() metode bruges til at udskrive runtime-klassen for 'o'-objektet.

Note: Efter indlæsning af en .class-fil vil JVM oprette et objekt af typen java.lang.Klasse i Heap-området. Vi kan bruge dette klasseobjekt til at få oplysninger på klasseniveau. Det er meget brugt i Afspejling  

5. finalize() metode

De afslutte() metode kaldes lige før en genstand opsamles skrald. Det kaldes Skraldesamler på en genstand, når skraldemanden fastslår, at der ikke er flere referencer til objektet. Vi bør tilsidesætte finalize()-metoden for at bortskaffe systemressourcer, udføre oprydningsaktiviteter og minimere hukommelseslækager. For eksempel før ødelæggelse af Servlet-objekternes webcontainer kaldes altid færdiggørelsesmetode til at udføre oprydningsaktiviteter i sessionen. 

Note: Finaliseringsmetoden kaldes bare engang på en genstand, selvom den pågældende genstand er berettiget til affaldsindsamling flere gange. 

Eksempel:

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

Produktion
1510467688 end finalize method called  

Forklaring: De afslutte() metode kaldes lige før genstanden er skrald opsamlet.

6. clone() metode 

De klone() metoden opretter og returnerer et nyt objekt, der er en kopi af det aktuelle objekt.

Eksempel:

public class Bog implementerer Cloneable {

privat String t; //titel


offentlig bog(streng t) {

dette.t = t;

}

@Tilsidesæt

public Object clone() kaster CloneNotSupportedException {

returner super.clone();

}

}

Forklaring: De klone() metode tilsidesættes for at returnere en klonet kopi af Bogobjekt .

7. Samtidighedsmetoder: wait() notify() og notifyAll()

Disse metoder er relateret til tråd Kommunikation i Java . De bruges til at få tråde til at vente eller underrette andre i samtidig programmering.

Eksempel på brug af alle Object Class Methods i Java

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

Produktion
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  

Forklaring: Ovenstående eksempel viser brugen af toString() er lig med() hashCode() og klone() metoder i Bog klasse .