logo

Clase de objeto en Java

Clase de objeto en Java está presente en java.lang paquete.

división de cadenas c++
  • Cada clase se deriva directa o indirectamente de la clase Objeto. Si una clase no extiende a ninguna otra clase, entonces es una clase hija directa de la Clase de objeto Java y si extiende a otra clase entonces se deriva indirectamente.
  • La clase Object proporciona varios métodos como toString()es igual() código hash() y muchos otros.
  • La clase Object actúa como raíz de la jerarquía de herencia en cualquier programa Java.

Aquí utilizamos el a cadena() y código hash() métodos de la clase de objeto para proporcionar una representación de cadena personalizada para una clase .



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

Producción
Person{name:'Geek'} 321001045 

Explicación: En el ejemplo anterior anulamos el a cadena() método para proporcionar un representación de cadena personalizada de la clase Persona y usar el código hash() método para mostrar el valor del código hash predeterminado del objeto.

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()
  • esperar() notificar() notificarTodos() (Métodos de concurrencia)
Métodos de clase de objeto en Java' title=

1. Método toString()

El a cadena() 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.



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

Ejemplo:

estudiante de clase pública {



cadena pública toString() {

devolver 'Objeto de estudiante';

}

}

Explicación: El método toString() se anula para devolver una representación de cadena personalizada del objeto Estudiante.

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 que no es correcta. 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 manera 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. 

Ejemplo:

estudiante de clase pública {

rollo interno;

@Anular

público int código hash() {

rollo de retorno;

}

}

Explicación: El código hash() El método se anula para devolver un valor hash personalizado basado en la tirada del objeto Estudiante.

3. Método igual (Objeto obj)

El es igual() El método compara el objeto dado con el objeto actual. Se recomienda anular este método para definir condiciones de igualdad personalizadas.

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

Ejemplo:

estudiante de clase pública {

rollo interno;


@Anular

booleano público es igual (Objeto o) {

if (o instancia de Estudiante) {

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

}

devolver falso;

}

}

Explicación: El es igual() El método se anula para comparar. rollo entre dos objetos de estudiante.

4. método getClass()

El obtenerClase() El método 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.

Ejemplo:

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

Producción
Class of Object o is: java.lang.String 

Explicación: El obtenerClase() El método se utiliza para imprimir la clase de tiempo de ejecución del objeto 'o'.

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

El finalizar() El 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 disponer de 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. 

Ejemplo:

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

Producción
1510467688 end finalize method called 

Explicación: El finalizar() El método se llama justo antes de que el objeto sea recolectado como basura.

6. método clonar () 

El clon() El método crea y devuelve un nuevo objeto que es una copia del objeto actual.

Ejemplo:

Libro de clase pública implementa Clonable {

cadena privada t; //título


Libro público (Cadena t) {

esto.t = t;

}

@Anular

clon de objeto público () lanza CloneNotSupportedException {

devolver super.clon();

}

}

Explicación: El clon() El método se anula para devolver una copia clonada del Objeto de libro .

7. Métodos de concurrencia: esperar (), notificar () y notificar a todos ()

Estos métodos están relacionados con Hilo de comunicación en Java. . Se utilizan para hacer que los subprocesos esperen o notifiquen a otros en programación concurrente.

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

Producción
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 

Explicación: El ejemplo anterior demuestra el uso de a cadena() es igual() código hash() y clon() métodos en el clase de libro .