Anuncios

Bienvenidos sean a este post, hoy veremos un metodo de GregorianCalendar.

Anuncios

Este metodo compara dos objetos de tipo GregorianCalendar para verificar si son iguales. Veamos su sintaxis:

objeto1.equals(objeto2);
Anuncios

El metodo se aplica a uno de los objetos y como argumento pasamos el otro que usaremos para compararlos. Este metodo devuelve un valor booleano para indicarlo. Si es true los dos son iguales, en caso contrario devuelve un false. Analicemos el siguiente ejemplo:

import java.util.*;

public class Gregorio
{
        public static void main(String[] args)
        {
        try
        {
                GregorianCalendar fecha1 = new GregorianCalendar();
                Thread.sleep(2000);
                GregorianCalendar fecha2 = new GregorianCalendar();
                boolean resultado = fecha1.equals(fecha2);
                if (resultado)
                        System.out.println("Son iguales");
                else
                        System.out.println("Son diferentes");
        } catch (InterruptedException e) {
                e.printStackTrace();
        }
        }
}
Anuncios
Anuncios

Para este ejemplo vamos a crear dos objetos de tipo GregorianCalendar pero agregaremos una demora de dos segundos entre ellos. Con nuestros dos objetos creados, definimos una variable donde almacenaremos el resultado de comparar a ambos objetos con el metodo equals, esta sera de tipo boolean (como mencionamos anteriormente). Con nuestro valor almacenado usaremos un condicional para evaluar sus dos valores. El primero sera para cuando es true, en caso de ser asi mostraremos un mensaje indicando que son iguales. En caso contrario, usaremos a else y este mostrara el mensaje indicando que son distintas. Como usamos a sleep para generar una demora debemos aplicar el try/catch. Todo lo anterior estara en el try y en caso de lanzar una excepcion sera interceptada por el catch y en caso de que suceda, mostraremos el contenido de memoria del stack. Con todo esto comentado, compilemos y veamos como es la salida:

$ java Gregorio
Son diferentes
$
Anuncios

Como pueden ver no son iguales por la pequeña demora que agregamos. Recuerden que el metodo hace la comparacion en milisegundos, Tiempo Unix, y no como nos lo muestran. Tomemos el codigo anterior y hagamos el siguiente cambio:

import java.util.*;

public class Gregorio
{
        public static void main(String[] args)
        {
        try
        {
                GregorianCalendar fecha1 = new GregorianCalendar();
                Thread.sleep(2000);
                GregorianCalendar fecha2 = (GregorianCalendar)fecha1.clone();
                boolean resultado = fecha1.equals(fecha2);
                if (resultado)
                        System.out.println("Son iguales");
                else
                        System.out.println("Son diferentes");
        } catch (InterruptedException e) {
                e.printStackTrace();
        }
        }
}
Anuncios

En este caso, solo modificamos al segundo objeto, fecha2, y para el contenido usaremos a clone para copiar el contenido de fecha1. Como este metodo copia solamente los valores devuelve un tipo Object que no es del tipo que usamos para fecha2. Para poder convertirlo usamos un «casteo» para indicar a que tipo debemos convertirlo y esto permitira asignar el valor devuelto al objeto. El resto del codigo sigue siendo lo mismo que comentamos anteriormente. Compilemos nuevamente y veamos la nueva salida:

$ java Gregorio
Son iguales
$
Anuncios

Como uno es la copia del otro objeto cuando los comparemos nos devolvera que son iguales. Si omitieramos la demora, con los ordenadores actuales nos devolvera que son iguales pero en algunos dispositivos o equipos viejos, la demora en generar el segundo objeto puede evidenciar una diferencia y devolver que no sean iguales.

Anuncios

En resumen, hoy hemos visto a GregorianCalendar.equals, que es, para que sirve, como se utiliza, un ejemplo practico para verlo en accion y una pequeña modificacion para ver el otro estado. Espero les haya resultado de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios

Donación

Es para mantenimento del sitio, gracias!

$1.50