Objecte la classe és present java.lang paquet. Totes les classes de Java es deriven directament o indirectament de la Objecte classe. Si una classe no amplia cap altra classe, llavors és una classe secundaria directa de Objecte i si s'estén una altra classe aleshores es deriva indirectament. Per tant, els mètodes de classe Object estan disponibles per a totes les classes Java. Per tant, la classe Object actua com a arrel de la jerarquia d'herència en qualsevol programa Java.
Ús de mètodes de classe d'objectes
La classe Object proporciona diversos mètodes que són els següents:
- mètode toString().
- mètode hashCode().
- mètode equals(Object obj).
- mètode finalize().
- mètode getClass().
- mètode clone().
- wait(), notify() notifyAll() mètodes
1. Mètode toString().
El toString() proporciona una representació String d'un objecte i s'utilitza per convertir un objecte en una String. El mètode toString() per defecte per a la classe Object retorna una cadena formada pel nom de la classe de la qual l'objecte és una instància, el caràcter at-sign `@' i la representació hexadecimal sense signe del codi hash de l'objecte. En altres paraules, es defineix com:
// 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()); }>
Sempre es recomana anul·lar el toString() mètode per obtenir la nostra pròpia representació String de Object. Per obtenir més informació sobre la substitució del mètode toString(), consulteu - Sobreescrivint toString() a Java
Nota: Sempre que intentem imprimir qualsevol referència d'objecte, internament es crida el mètode toString().
Student s = new Student(); // Below two statements are equivalent System.out.println(s); System.out.println(s.toString());>
2. mètode hashCode().
Per a cada objecte, JVM genera un número únic que és un codi hash. Retorna nombres enters diferents per a objectes diferents. Una idea errònia comuna sobre aquest mètode és que el mètode hashCode() retorna l'adreça de l'objecte, que no és correcta. Converteix l'adreça interna de l'objecte en un nombre enter mitjançant un algorisme. El mètode hashCode() és autòcton perquè a Java és impossible trobar l'adreça d'un objecte, de manera que utilitza llenguatges nadius com C/C++ per trobar l'adreça de l'objecte.
Ús del mètode hashCode().
Retorna un valor hash que s'utilitza per cercar objectes en una col·lecció. JVM (Java Virtual Machine) utilitza el mètode hashcode mentre desa objectes en estructures de dades relacionades amb hash com HashSet, HashMap, Hashtable, etc. El principal avantatge de desar objectes basats en codi hash és que la cerca es fa fàcil.
Nota: Anul·lació de hashCode() El mètode s'ha de fer de manera que per a cada objecte generem un número únic. Per exemple, per a una classe d'estudiant, podem retornar el rotlle núm. d'un estudiant del mètode hashCode() ja que és únic.
windows.open javascript
Java
// 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());> > }> }> |
com llegir un fitxer json
>
>
Sortida:
Student@64 Student@64>
Tingueu en compte que 4*160+ 6*161= 100
3. mètode equals(Object obj).
Compara l'objecte donat amb aquest objecte (l'objecte sobre el qual es crida el mètode). Ofereix una manera genèrica de comparar objectes per igualtat. Es recomana anul·lar el iguals (objecte objecte) mètode per obtenir la nostra pròpia condició d'igualtat en els objectes. Per obtenir més informació sobre el mètode d'anul·lació d'equals(Object obj), consulteu - Anul·lació del mètode igual a Java
Nota: En general, és necessari anul·lar el hashCode() sempre que aquest mètode es substitueixi, per tal de mantenir el contracte general del mètode hashCode, que estableix que els objectes iguals han de tenir codis hash iguals.
4. Mètode getClass().
Retorna l'objecte de classe d'aquest objecte i s'utilitza per obtenir la classe d'execució real de l'objecte. També es pot utilitzar per obtenir metadades d'aquesta classe. L'objecte Class retornat és l'objecte que està bloquejat per mètodes estàtics sincronitzats de la classe representada. Com que és definitiu, no ho anul·lem.
Java
mysql llista tots els usuaris
// 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());> > }> }> |
>
>
Sortida:
Class of Object obj is : java.lang.String>
Nota: Després de carregar un fitxer .class, JVM crearà un objecte del tipus java.lang.Class a la zona Heap. Podem utilitzar aquest objecte de classe per obtenir informació de nivell de classe. S'utilitza àmpliament a Reflexió
5. mètode finalize().
Aquest mètode es crida just abans que un objecte es reculli les escombraries. Es diu el Abocador en un objecte quan el col·lector d'escombraries determina que no hi ha més referències a l'objecte. Hauríem d'anul·lar el mètode finalize() per eliminar els recursos del sistema, realitzar activitats de neteja i minimitzar les fuites de memòria. Per exemple, abans de destruir el contenidor web d'objectes Servlet, sempre anomenat mètode finalize per realitzar activitats de neteja de la sessió.
Nota: El mètode finalize s'anomena just un cop en un objecte encara que aquest objecte sigui apte per a la recollida d'escombraries diverses vegades.
Java
// 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'> );> > }> }> |
>
>
Sortida:
retorn de matrius en java
1510467688 finalize method called end>
6. mètode clone().
Retorna un objecte nou que és exactament el mateix que aquest objecte. Per al mètode clone() consulteu Clonar() .
Els tres mètodes restants espera () , notificar () notifyAll() estan relacionats amb la concurrència. Consulteu Comunicació entre fils en Java per als detalls.
Exemple d'ús de tots els mètodes de classe Object a Java
Java
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();> > }> }> |
>
govinda
>Sortida
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>