elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  [Aporte] ....::: Clase Object del paquete java.lang :::...
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Aporte] ....::: Clase Object del paquete java.lang :::...  (Leído 2,836 veces)
horny3

Desconectado Desconectado

Mensajes: 11



Ver Perfil
[Aporte] ....::: Clase Object del paquete java.lang :::...
« en: 1 Octubre 2012, 02:58 am »


....::: Clase Object del paquete java.lang :::...

El paquete más importante de Java es java.lang. Este paquete aporta interfaces y clases tan fundamentales para Java que están integradas con el propio lenguaje y no es preciso importarlas. Cada clase es un descendiente, directo o indirecto, de la clase Object. Cada clase que usa o escribe hereda los métodos de instancia de Object.

Los métodos heredados de Object que se discuten en esta sección son:

  • 1.-equals
  • 2.-finalize
  • 3.-getClass
  • 4.-hashCode
  • 5.-toString

1.- equals

El método equals() compara dos objetos por igualdad y devuelve true si son iguales. El método equals() proveído en la clase Object usa el operador de identidad (==) para determinar si dos objetos son iguales.

  • Para tipos de datos primitivos (boolean,byte,short,int,long,float,double), esto da el resultado correcto.
  • Para objetos, sin embargo, no. El método equals() proveído por Object comprueba si las referencias del objeto son iguales esto es, si los objetos comparados son exactamente el mismo objeto.


Ejemplo: En ste caso solo se crea un Objeto String q se almacena en memoria, cadena_2, contiene una referencia hacia este Objeto.!

Código
  1.  
  2. //Creamos 1 solo objeto String
  3. String cadena_1= "Clase Object";
  4. String cadena_2= "Clase Object";
  5.  
  6. //Comparamos las referencias
  7. if(cadena_1==cadena_2)
  8.   System.out.println("Las referencias son al mismo objecto ..!!");
  9. else
  10.   System.out.println("Las referencias no son al mismo objecto ..!!");
  11.  
  12. //Comparamos el contenido
  13. if(cadena_1.equals(cadena_2))
  14.   System.out.println("El contenido es el mismo");
  15. else
  16.   System.out.println("El contenido no es el mismo");
  17.  
  18.  

Los resultados son:

         Las referencias son al mismo objecto ..!!
         El contenido es el mismo


Ejemplo: En ste caso la 1mera linea crea un nuevo Objeto String duplicando el existente en el area de memoria reservada y almacena una referencia al mismo en str_1. En la 2da linea simplemente almacena en str_2 una referencia al objeto q ya existe en memoria.!


Código
  1.  
  2. //Creamos 2 objetos String
  3. String str_1= new String("Clase Object");
  4. String str_2= "Clase Object";
  5.  
  6. //Comparamos las referencias
  7. if(str_1==str_2)
  8.   System.out.println("Las referencias son al mismo objecto ..!!");
  9. else
  10.   System.out.println("Las referencias no son al mismo objecto ..!!");
  11.  
  12. //Comparamos el contenido
  13. if(str_1.equals(str_2))
  14.   System.out.println("El contenido es el mismo");
  15. else
  16.   System.out.println("El contenido no es el mismo");
  17.  
  18.  

Los resultados son:

           Las referencias no son al mismo objecto ..!!
           El contenido es el mismo

 
Ejemplo: Se crean 2 Objetos en la Memoria destinada para los objetos.!

Código
  1.  
  2. //Creamos 2 objetos String
  3. String cad_1= new String("Clase Object,Equals");
  4. String cad_2= new String("Clase Object,Equals");
  5.  
  6. //Comparamos las referencias
  7. if(cad_1==cad_2)
  8.   System.out.println("Las referencias son al mismo objecto ..!!");
  9. else
  10.   System.out.println("Las referencias no son al mismo objecto ..!!");
  11.  
  12. //Comparamos el contenido
  13. if(cad_1.equals(cad_2))
  14.   System.out.println("El contenido es el mismo");
  15. else
  16.   System.out.println("El contenido no es el mismo");
  17.  
  18.  

Los resultados son:

          Las referencias no son al mismo objecto ..!!
          El contenido es el mismo   
     

2.-finalize

La clase Object provee un método de llamada de regreso, finalize(), que puede invocarse sobre un objeto cuando se convierte en basura. La implementación de finalize() de Object no hace nada puede sobrepasar finalize() para limpiar, tal como liberar recursos.

El método finalize() puede llamarse automáticamente por el sistema, pero cuando se llama, o incluso si se llama, es incierto. Por eso, no debería depender en este método para hacer la limpieza por usted. Por ejemplo, si no cierra los descriptores de archivo después de efectuar E/S y espera que finalize() los cierre por usted, podría quedarse sin descriptores de archivo.

  • Método que nos permite gestionar la limpieza de los recursos utilizados en la clase antes de que esta sea eliminada por el Garbage Collector. En la clase Object no ejecuta nada. Es un método que está sobrescrito en las clases que lo utilicen.

Código
  1.  
  2. protected void finalize() throws Throwable
  3.  
  4.  

La definición del método finalize() tiene la siguiente estructura:

Código
  1.  
  2. protected void finalize() throws Throwable
  3. {
  4.    System.out.println("Finalizando el Objeto");
  5.    super.finalize();
  6. }
  7.  
  8.  

Al incluir el método finalize() sobre un objeto estaremos reescribiendo el método finalize() por defecto que viene en la clase Object. Mediante la sentencia super.finalize() estamos ejecutando el método finalize() de las clases padre.
Aunque los métodos finalize() se ejecutarán cuando pase el garbage collector, existe la posibilidad de sugerir a la máquina virtual java (jvm) que se ejecute el finalize de los métodos. Esto lo conseguiremos ejecutando el método runFinalization() de la clase System.

  • El método System.runFinalization() solo es una sugerencia. No implica una ejecución directa de los métodos finalize().

El código de ejecución del System.runFinalization() sería el siguiente:

Código
  1.  
  2. public static void main(String[] args)
  3. {
  4.   FinalizarUnObjeto fuo = new FinalizarUnObjeto();
  5.   System.out.println(fuo.toString());
  6.   fuo = null;
  7.   System.runFinalization();
  8. }
  9.  
  10.  

.-getClass

El método getClass() es un método final (no puede sobreescribirse) que devuelve una representación en tiempo de ejecución de la clase del objeto. El método getClass() devuelve un objeto Class, el cual tiene métodos que puede usar para obtener información sobre la clase, tal como su nombre (getSimpleName()), su superclase (getSuperclass()), y las interfaces que implementa (getInterfaces()).

Por ejemplo, el siguiente método obtiene y despliega el nombre de clase de un objeto, tambien a que super clase pertenece:

Código
  1.  
  2. //Creamos una varible del tipo de la clase, luego con NEW creamos el objeto.
  3. Clase_Object_GetClass objGetClass= new Clase_Object_GetClass();
  4.  
  5. //Nombre de clase
  6. System.out.println("Nombre de la clase es : "+objGetClass.getClass().getSimpleName());
  7. //Su super Clase
  8. System.out.println("Su super Clase es  : "+objGetClass.getClass().getSuperclass());
  9.  
  10.  


Un uso muy manejado del método getClass() es crear un ejemplar de una clase sin conocer la clase en el momento de la compilación.
La clase Class, en el paquete java.lang, tiene un gran número de métodos (más de 50). Por ejemplo, puee comprobar para ver si la clase es una anotación (isAnnotation()), una interfaz (isInterface()), o una enumeración (isEnum()). Puede ver cuáles son los campos del objeto (getFields()) o cuáles son sus métodos (getMethods()), y así sucesivamente.

4.-hashCode

El valor devuelto por hashCode() es el código de identificación (hash) del objeto, que es la dirección de memoria del objeto en hexadecimal.

Por definición, si dos objetos son iguales, el código de identificación debe también ser igual. Si sobrepasa el método equals, cambia la forma en que se comparan los objetos y la implementación de hashCode() de Object ya no es válida. Por eso, si sobrepasa el método equals(), debe también sobrepasar el método hashCode() también.

Código
  1.  
  2.        //Creamos una varible del tipo de la clase, luego con NEW creamos el objeto.
  3.        Clase_Object_GetClass objGetClass= new Clase_Object_GetClass();
  4.  
  5.         System.out.println("Dirección de memoria del objeto en hexadecimal : "+objGetClass.hashCode());
  6.  
  7.  

5.-toString

Debería siempre considerar el método toString() en sus clases. El método toString() de Object devuelve una representación  String del objeto, que es muy útil para la depuración. La representación String para un objeto depende enteramente del objeto, que es la razón por la que necesita sobrepasar a toString() en sus clases.

Este método devuelve una cadena de texto que representa al objeto. Se puede utilizar toString para mostrar un objeto. La representación de un objeto depende enteramente del objeto. El String de un objeto entero es el valor del entero mostrado como texto.

Por ejemplo, se podría mostrar una representación del Thread actual de la siguiente forma.

Código
  1.  
  2. System.out.println(Thread.currentThread().toString());
  3. System.out.println(new Integer(44).toString());
  4.  
  5.  


« Última modificación: 1 Octubre 2012, 05:06 am por horny3 » En línea

Observo, analizo y callo mientras me voy decepcionando en silencio.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
contentPane:java.lang.IllegalArgumentException
Java
[GB] 3 4,730 Último mensaje 23 Noviembre 2009, 01:55 am
por [GB]
¿Cuál es la diferencia entre Biblioteca de clases de Java y un paquete de clase?
Java
theluigy13etv 2 9,746 Último mensaje 23 Abril 2012, 01:21 am
por sapito169
[Aporte] ....::: Clase Arrays del paquete java.util :::...
Java
horny3 0 4,114 Último mensaje 24 Septiembre 2012, 06:43 am
por horny3
Error java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to class
Java
S4ms3pi0l__ 0 3,904 Último mensaje 14 Agosto 2019, 01:48 am
por S4ms3pi0l__
Error java.lang.Byte cannot be cast to java.lang.Integer
Java
S4ms3pi0l__ 1 4,022 Último mensaje 24 Agosto 2019, 18:25 pm
por ivancea96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines