logo

Clase de objeto en Java

Objeto la clase está presente en java.lang paquete. Cada clase en Java se deriva directa o indirectamente del Objeto clase. Si una clase no extiende ninguna otra clase, entonces es una clase hija directa de Objeto y si se extiende a otra clase, entonces se deriva indirectamente. Por lo tanto, los métodos de la clase Object están disponibles para todas las clases Java. Por lo tanto, la clase Object actúa como raíz de la jerarquía de herencia en cualquier programa Java.

Clase de objeto en Java



Usar métodos de clase de objeto

La clase Object proporciona múltiples métodos que son los siguientes:

  • método toString()
  • método hashCode()
  • método igual (Objeto obj)
  • método finalizar()
  • método getClass()
  • método clonar()
  • métodos esperar (), notificar () notificar a todos ()

1. método toString()

toString() proporciona una representación de cadena de un objeto y se utiliza para convertir un objeto en una cadena. El método toString() predeterminado para la clase Object devuelve una cadena que consta del nombre de la clase de la cual el objeto es una instancia, el carácter de arroba `@’ y la representación hexadecimal sin signo del código hash del objeto. En otras palabras, se define como:

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

Siempre se recomienda anular el Encadenar() método para obtener nuestra propia representación de cadena de objeto. Para obtener más información sobre la anulación del método toString(), consulte: Anulando toString() en Java



Nota: Siempre que intentamos imprimir cualquier referencia de Objeto, internamente se llama al método toString().

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

2. método hashCode ()

Para cada objeto, JVM genera un número único que es un código hash. Devuelve números enteros distintos para objetos distintos. Un error común acerca de este método es que el método hashCode() devuelve la dirección del objeto, lo cual no es correcto. Convierte la dirección interna del objeto en un número entero mediante el uso de un algoritmo. El método hashCode() es nativo Debido a que en Java es imposible encontrar la dirección de un objeto, utiliza lenguajes nativos como C/C++ para encontrar la dirección del objeto.

Uso del método hashCode()

Devuelve un valor hash que se utiliza para buscar objetos en una colección. JVM (Java Virtual Machine) utiliza el método de código hash mientras guarda objetos en estructuras de datos relacionadas con hash como HashSet, HashMap, Hashtable, etc. La principal ventaja de guardar objetos basados ​​en código hash es que la búsqueda se vuelve fácil.



Nota: Anulación de código hash() El método debe realizarse de modo que para cada objeto generemos un número único. Por ejemplo, para una clase de Estudiante, podemos devolver el número de lista. de un estudiante del método hashCode() ya que es único.

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

>

>

Producción :

Student@64 Student@64>

Tenga en cuenta que 4*160+ 6*161= 100

3. método igual (Objeto obj)

Compara el objeto dado con este objeto (el objeto sobre el que se llama el método). Proporciona una forma genérica de comparar objetos en busca de igualdad. Se recomienda anular el es igual(Objeto obj) método para obtener nuestra propia condición de igualdad en los Objetos. Para obtener más información sobre la anulación del método igual (Objeto obj), consulte: Anulando el método igual en Java

Nota: Generalmente es necesario anular el código hash() método siempre que se anule este método, a fin de mantener el contrato general para el método hashCode, que establece que objetos iguales deben tener códigos hash iguales.

4. método getClass()

Devuelve el objeto de clase de este objeto y se utiliza para obtener la clase de tiempo de ejecución real del objeto. También se puede utilizar para obtener metadatos de esta clase. El objeto Clase devuelto es el objeto que está bloqueado por métodos estáticos sincronizados de la clase representada. Como es definitivo, no lo anulamos.

Java

convertir cadena a int java




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

>

>

Producción:

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

Nota: Después de cargar un archivo .class, JVM creará un objeto del tipo clase java.lang. en el área del montón. Podemos usar este objeto de clase para obtener información a nivel de clase. Es ampliamente utilizado en Reflexión

5. método finalizar ()

Este método se llama justo antes de que un objeto sea recolectado como basura. Se llama el Recolector de basura en un objeto cuando el recolector de basura determina que no hay más referencias al objeto. Deberíamos anular el método finalize() para eliminar los recursos del sistema, realizar actividades de limpieza y minimizar las pérdidas de memoria. Por ejemplo, antes de destruir el contenedor web de objetos Servlet, siempre se llama al método finalize para realizar actividades de limpieza de la sesión.

Nota: El método de finalización se llama simplemente una vez en un objeto aunque ese objeto sea elegible para la recolección de basura varias veces.

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

>

>

Producción:

1510467688 finalize method called end>

6. método clonar ()

Devuelve un nuevo objeto que es exactamente igual a este objeto. Para el método clone() consulte Clon() .

tipos de referencia java

Los tres métodos restantes esperar() , notificar() notificar a todos() están relacionados con la concurrencia. Referirse a Comunicación entre subprocesos en Java para detalles.

Ejemplo de uso de todos los métodos de la clase Object en 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();> >}> }>

>

>

Producción

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>