Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
La clase Object, como ya se ha indicado anteriormente, es la clase raz de todo el rbol de la jerarqua de clases Java, y
proporciona un cierto nmero de mtodos de utilidad general que pueden utilizar todos los objetos. La lista completa se
puede ver en la documentacin del API de Java, aqu solamente se tratarn algunos de ellos; por
ejemplo, Object proporciona:
El mtodo equals()
public boolean equals( Object obj );
Todas las clases que se definan en Java heredarn el mtodo equals(), que se puede utilizar para comparar dos objetos.
Esta comparacin no es la misma que proporciona el operador ==, que solamente compara si dos referencias a objetos
apuntan al mismo objeto.
El mtodo equals() se utiliza para saber si dos objetos separados son del mismo tipo y contienen los mismos datos. El
mtodo devuelve true si los objetos son iguales y false en caso contrario.
El sistema ya sabe de antemano cmo aplicar el mtodo a todas las clases estndar y a todos los objetos de los que el
compilador tiene conocimiento. Por ejemplo, se puede usar directamente para saber si dos objetos String son iguales.
Las subclases pueden sobreescribir el mtodo equals() para realizar la adecuada comparacin entre dos objetos de un tipo
que haya sido definido por el programador. En la aplicacin de ejemplo siguiente, java511.java, se sobreescribe el mtodo
para comparar dos objetos de la nueva clase que crea la aplicacin.
Hay que observar que en la lista de argumentos del mtodo equals() hay que pasarle un argumento de tipo Object. Si se
define un mtodo con un argumento de tipo diferente, se estar sobrecargando el mtodo, no sobreescribindolo.
En el ejemplo, una vez que se ejecuta, es necesario hacer un moldeo del argumento al tipo de la clase antes de intentar
realizar la comparacin. Se utiliza el operador instanceof para confirmar que el objeto es del tipo correcto. Uno de los
objetos proporcionados para comprobar su equivalencia es de tipo errneo (String) y el mtodo sobreescrito equals()
indicar que no es un objeto equivalente.
class java511 {
int miDato;
// Constructor parametrizado
java511( int dato ) {
miDato = dato; }
public static void main(String args[] ) {
// Se instancian los objetos que se van a testear
java511 obj1 = new java511( 2 );
java511 obj2 = new java511( 2 );
java511 obj3 = new java511( 3 );
String obj4 = "Un objeto String";
El siguiente programa, java512.java, ilustra alguna de estas caractersticas. Primero, instancia un objeto, mira la clase de
ese objeto y utiliza alguno de los mtodos de la clase Class para obtener y presentar informacin acerca del objeto. Luego,
pregunta al usuario si quiere instanciar un nuevo objeto, instanciando un objeto de tipo String en un caso o, en el otro caso,
se aplica el mtodo getClass() a un objeto existente y utilizando el mtodo newInstance() se instancia un nuevo objeto del
mismo tipo.
import java.io.*;
class java512 {
public static void main( String args[] ) {
java512 obj1 = new java512();
// Se usa el metodo getClass() de la clase Object y dos
// metodos de la clase Class para obtener y presentar
// informacion acerca del objeto
System.out.println( "Nombre de la clase de obj1: "
+ obj1.getClass().getName() );
System.out.println( "Nombre de la superclase de obj1: "
+ obj1.getClass().getSuperclass() );
// Ahora se instancia otro objeto basandose en la entrada
// del usuario, de forma que el compilador no tiene forma
// de conocer el tipo del objeto en tiempo de compilacion
// Se declara una referencia a un objeto generico
Object obj2 = null;
// Se pide la entrada al usuario
System.out.println( "Introduce un 0 o un 1" );
try {
// Captura la entrada del usuario
int dato = System.in.read();
// Si se ha introducido un 0
if( (char)dato == '0' )
// Se crea un objeto String
obj2 = "Esto es un objeto String";
// Sino, se crea un nuevo objeto del mismo tipo
// que el anterior
else
obj2 = obj1.getClass().newInstance();
} catch( Exception e ) {
System.out.println( "Excepcion " + e );
El mtodo toString()
public String toString();
La clase Object dispone de este mtodo que puede usarse para convertir todos los objetos conocidos por el compilador a
algn tipo de representacin de cadena, que depender del objeto.
Por ejemplo, el mtodo toString() extrae el entero contenido en un objeto Integer. De forma similar, si se aplica el mtodo
toString() al objeto Thread, se puede obtener informacin importante acerca de los threads y presentarla como cadena.
Este mtodo tambin se puede sobreescribir, o redefinir, para convertir los objetos definidos por el programador a cadenas.
El programa siguiente, java513.java, redefine el mtodo toString() de una clase recin definida para que pueda utilizarse en
la conversin de objetos de esta clase a cadenas.
class java513 {
// Se definen las variables de instancia para la clase
String uno;
String dos;
String tres;
// Constructor de la clase
java513( String a,String b,String c ) {
uno = a;
dos = b;
tres = c;}
public static void main( String args[] ) {
// Se instancia un objeto de la clase
java513 obj = new java513( "Tutorial","de","Java" );
// Se presenta el objeto utilizando el metodo sobreescrito
System.out.println( obj.toString() );
}
// Sobreescritura del metodo toString() de la clase Object
public String toString() {
// Convierte un objeto a cadena y lo devuelve
return( uno+" "+dos+" "+tres );
}
Otros Mtodos
Hay otros mtodos tiles en la clase Object que son, o sern, discutidos en otras secciones de este documento. Por
ejemplo, el mtodo
protected void finalize();
que se tratar en el apartado de finalizadores. O tambin, los mtodos que se utilizan en la programacin de threads para
hacer que varios threads se sincronicen, como son
public final void wait();
TIPOS DE VARIABLES
Las variables son posiciones de memoria reservadas para almacenar valores. Esto significa que
cuando se crea una variable para reservar algo se crea un espacio en la memoria.
Existen dos tipos de datos disponibles en Java:
Tipo de datos Byte se utiliza para ahorrar espacio en grandes conjuntos, sobre todo en el
lugar de los nmeros enteros, ya que un byte es cuatro veces ms pequeo que un int.
Short
Tipo de datos Short tambin se puede utilizar para ahorrar memoria como tipo de datos
byte. Un tipo de dato short es 2 veces ms pequeo que un int.
Int
Int. se utiliza generalmente como el tipo de datos predeterminado para los valores
enteros a menos que exista una preocupacin acerca de la memoria.
Long
Este tipo se utiliza cuando se necesita una gama ms amplia que int.
Float
Double
Este tipo de datos se utiliza generalmente como el tipo de datos predeterminado para
valores decimales, en general, la opcin por defecto.
Boolean
Este tipo de datos se utiliza para indicadores simples que hacen un seguimiento de
condiciones.
Char
Objetos de la Clase, y varios tipos de variables de array estn bajo tipo de datos de
referencia.
Una variable de referencia se puede utilizar para referirse a cualquier objeto del tipo
declarado o cualquier tipo compatible.