Classe di oggetti in Java

Classe di oggetti in Java

Classe dell'oggetto in Java è presente in java.lang pacchetto.

  • Ogni classe deriva direttamente o indirettamente dalla classe Object. Se una classe non estende nessun'altra classe allora è una classe figlia diretta di Classe oggetto Java e se estende un'altra classe allora è derivata indirettamente.
  • La classe Object fornisce diversi metodi come toString()è uguale a() codicehash() e molti altri.
  • La classe Object funge da radice della gerarchia di ereditarietà in qualsiasi programma Java.

Qui usiamo il aString() E codicehash() metodi della classe Object per fornire una rappresentazione di stringa personalizzata per una classe .

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

Produzione
Person{name:'Geek'} 321001045  

Spiegazione: Nell'esempio sopra sovrascriviamo the aString() metodo per fornire a rappresentazione di stringa personalizzata della classe Person e utilizzare il codicehash() metodo per visualizzare il valore del codice hash predefinito dell'oggetto.

Metodi di classe di oggetti

La classe Object fornisce più metodi che sono i seguenti:

  • metodo toString()
  • metodo hashCode()
  • metodo equals(Oggetto oggetto).
  • metodo finalize()
  • metodo getClass()
  • metodo clone()
  • wait() notify() notifyAll() (metodi di concorrenza)
Metodi di classe di oggetti in Java

1. Metodo toString()

IL aString() fornisce una rappresentazione String di un oggetto e viene utilizzato per convertire un oggetto in una String. Il metodo toString() predefinito per la classe Object restituisce una stringa composta dal nome della classe di cui l'oggetto è un'istanza, dal carattere "@" e dalla rappresentazione esadecimale senza segno del codice hash dell'oggetto.

Nota: Ogni volta che proviamo a stampare qualsiasi riferimento a un oggetto, internamente viene chiamato il metodo toString().

Esempio:

Studente di classe pubblica {

public String toString() {

return 'Oggetto studente';

}

}

Spiegazione: Il metodo toString() viene sovrascritto per restituire una rappresentazione di stringa personalizzata dell'oggetto Student.

2. Metodo hashCode()

Per ogni oggetto JVM genera un numero univoco che è un hashcode. Restituisce numeri interi distinti per oggetti distinti. Un malinteso comune su questo metodo è che il metodo hashCode() restituisca l'indirizzo dell'oggetto che non è corretto. Converte l'indirizzo interno dell'oggetto in un numero intero utilizzando un algoritmo. Il metodo hashCode() lo è nativo perché in Java è impossibile trovare l'indirizzo di un oggetto quindi utilizza linguaggi nativi come C/C++ per trovare l'indirizzo dell'oggetto.

Utilizzo del metodo hashCode():

Restituisce un valore hash utilizzato per cercare oggetti in una raccolta. JVM (Java Virtual Machine) utilizza il metodo hashcode durante il salvataggio degli oggetti in strutture dati correlate all'hashing come HashSet HashMap Hashtable ecc. Il vantaggio principale del salvataggio di oggetti in base al codice hash è che la ricerca diventa semplice. 

Nota: Override di codicehash() Il metodo deve essere fatto in modo tale che per ogni oggetto generiamo un numero univoco. Ad esempio per una classe Studenti possiamo restituire l'elenco n. di uno studente dal metodo hashCode() poiché è unico. 

Esempio:

Studente di classe pubblica {

rotolo intero;

@Ignora

public int hashCode() {

rotolo di ritorno;

}

}

Spiegazione: IL codicehash() il metodo viene sovrascritto per restituire un valore hash personalizzato in base al lancio dell'oggetto Student.

3. Metodo equals(Oggetto oggetto).

IL è uguale a() Il metodo confronta l'oggetto dato con l'oggetto corrente. Si consiglia di sovrascrivere questo metodo per definire condizioni di uguaglianza personalizzate.

Nota: In genere è necessario sovrascrivere il file codicehash() metodo ogni volta che questo metodo viene sovrascritto in modo da mantenere il contratto generale per il metodo hashCode che afferma che oggetti uguali devono avere codici hash uguali. 

Esempio:

Studente di classe pubblica {

rotolo intero;


@Ignora

booleano pubblico è uguale a (Oggetto o) {

if (o istanza di Student) {

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

}

restituire falso;

}

}

Spiegazione: IL è uguale a() il metodo viene sovrascritto per il confronto rotolo tra due oggetti Studente.

4. Metodo getClass()

IL getClass() Il metodo restituisce l'oggetto classe di "questo" oggetto e viene utilizzato per ottenere l'effettiva classe di runtime dell'oggetto. Può anche essere utilizzato per ottenere metadati di questa classe. L'oggetto Class restituito è l'oggetto bloccato dai metodi statici sincronizzati della classe rappresentata. Poiché è definitivo, non lo sovrascriviamo.

Esempio:

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

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

Spiegazione: IL getClass() Il metodo viene utilizzato per stampare la classe runtime dell'oggetto 'o'.

Nota: Dopo aver caricato un file .class, JVM creerà un oggetto del tipo java.lang.Class nell'area dell'heap. Possiamo usare questo oggetto classe per ottenere informazioni a livello di classe. È ampiamente usato in Riflessione  

5. metodo finalize()

IL finalizzare() Il metodo viene chiamato subito prima che un oggetto venga sottoposto a Garbage Collection. Si chiama il Raccoglitore di rifiuti su un oggetto quando il Garbage Collector determina che non sono più presenti riferimenti all'oggetto. Dovremmo sovrascrivere il metodo finalize() per smaltire le risorse di sistema, eseguire attività di pulizia e ridurre al minimo le perdite di memoria. Ad esempio prima di distruggere gli oggetti Servlet il web container chiama sempre il metodo finalize per eseguire attività di pulizia della sessione. 

Nota: Il metodo finalize si chiama just una volta su un oggetto anche se tale oggetto è idoneo per la Garbage Collection più volte. 

Esempio:

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

Produzione
1510467688 end finalize method called  

Spiegazione: IL finalizzare() Il metodo viene chiamato subito prima che l'oggetto venga sottoposto a Garbage Collection.

6. metodo clone() 

IL clone() Il metodo crea e restituisce un nuovo oggetto che è una copia dell'oggetto corrente.

Esempio:

la classe pubblica Book implementa Cloneable {

stringa privata t; //titolo


libro pubblico(String t) {

questo.t = t;

}

@Ignora

public Object clone() lancia CloneNotSupportedException {

restituisce super.clone();

}

}

Spiegazione: IL clone() viene sovrascritto per restituire una copia clonata del file Oggetto libro .

7. Metodi di concorrenza: wait() notify() e notifyAll()

Questi metodi sono correlati a discussione Comunicazione in Java . Vengono utilizzati per far attendere i thread o avvisare gli altri nella programmazione simultanea.

Esempio di utilizzo di tutti i metodi della classe oggetto in 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  ();      }   }   

Produzione
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  

Spiegazione: L'esempio precedente dimostra l'uso di aString() uguale() hashCode() E clone() metodi in Lezione di libro .