Classe dell'oggetto in Java è presente in java.lang pacchetto.
primavera mvc
- 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)

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
Javaimport 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 .