logo

Classe di oggetti in Java

Oggetto la classe è presente in java.lang pacchetto. Ogni classe in Java deriva direttamente o indirettamente da Oggetto classe. Se una classe non estende nessun'altra classe, allora è una classe figlia diretta di Oggetto e se estende un'altra classe, viene derivata indirettamente. Pertanto i metodi della classe Object sono disponibili per tutte le classi Java. Quindi la classe Object funge da radice della gerarchia di ereditarietà in qualsiasi programma Java.

Classe di oggetti in Java

Utilizzo dei metodi delle classi 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()
  • metodi wait(), notify() notifyAll()

1. metodo toString()

toString() 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, il carattere '@' e la rappresentazione esadecimale senza segno del codice hash dell'oggetto. In altre parole, è definito come:

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

Si consiglia sempre di sovrascrivere il file accordare() metodo per ottenere la nostra rappresentazione String di Object. Per ulteriori informazioni sull'override del metodo toString() fare riferimento a – Sostituzione di toString() in Java

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

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

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, il 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 codice hash() Il metodo deve essere fatto in modo tale che per ogni oggetto generiamo un numero univoco. Ad esempio, per una classe Studente, possiamo restituire il numero dell'elenco. di uno studente dal metodo hashCode() poiché è unico.

Giava




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

comando sed

>

>

Produzione :

Student@64 Student@64>

Tieni presente che 4*160+6*161= 100

ottieni la lunghezza dell'array in c

3. metodo equals(Oggetto oggetto).

Confronta l'oggetto dato con questo oggetto (l'oggetto su cui viene chiamato il metodo). Fornisce un modo generico per confrontare gli oggetti per l'uguaglianza. Si consiglia di sovrascrivere il file è uguale a(Oggetto oggetto) metodo per ottenere la nostra condizione di uguaglianza sugli oggetti. Per ulteriori informazioni sull'override del metodo equals (Object obj) fare riferimento a – Sostituire il metodo equals in Java

Nota: In genere è necessario sovrascrivere il file codice hash() 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.

4. Metodo getClass()

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.

Giava




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

>

>

Produzione:

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

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

Questo metodo viene chiamato subito prima che un oggetto venga sottoposto a Garbage Collection. Si chiama il Netturbino 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 web container, chiamato sempre 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.

Giava




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

Numeri primi di programmazione Java

>

>

Produzione:

1510467688 finalize method called end>

6. metodo clone()

Restituisce un nuovo oggetto che è esattamente uguale a questo oggetto. Per il metodo clone() fare riferimento Clone() .

I restanti tre metodi Aspettare() , notificare() notificaTutti() sono legati alla concorrenza. Fare riferimento a Comunicazione inter-thread in Java per dettagli.

Esempio di utilizzo di tutti i metodi della classe Object in Java

Giava


formula muratrice



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

>

>

Produzione

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>