Destaques
Edicao Atual (n. 32)

 


 

No dia-a-dia do desenvolvimento Java enfrentamos muitos cenários comuns: trabalhar com datas, formatar números, Strings, ordenar objetos, procurar por objetos, trabalhar com arrays, manipular coleções de objetos, gerar números aleatórios e outros. O pacote java.util possui uma série de classes já prontas com tais funcionalidades e conhecê-las é fundamental para facilitar o desenvolvimento de sua aplicação.
Aqui, veremos separadamente algumas das principais classes e interfaces desse pacote, assim como suas utilidades mais práticas e dicas de onde usar cada uma delas.


Classes Utilitárias

java.util.Calendar

A classe abstrata Calendar encapsula um momento no tempo representado em milissegundos. Também provê métodos para manipulação desse momento. A subclasse concreta de Calendar mais usada é a GregorianCalendar que representa o calendário usado pela maior parte dos países (outras implementações existem, como a do calendário budista BuddhistCalendar, mas que são internas e devolvidas de acordo com seu Locale).

Para obter um Calendar que encapsula o instante atual (data e hora), usamos o método estático getInstance() de Calendar (veja o próximo exemplo).

A partir de um Calendar, podemos saber o valor de seus campos, como ano, mês, dia, hora e minuto. Para isso, usamos o método get que recebe um inteiro representando o campo; os valores possíveis estão em constantes na classe Calendar.

No exemplo abaixo, imprimimos o dia de hoje e o dia da semana correspondente. Note que o dia da semana devolvido é um inteiro que representa o dia da semana (Calendar.MONDAY, etc.):

Calendar c = Calendar.getInstance();
System.out.println(“Dia do Mês: “ + c.get(Calendar.DAY_OF_MONTH));
System.out.println(“Dia da Semana: “ + c.get(Calendar.DAY_OF_WEEK));

Um possível resultado é:

Dia do Mês: 4
Dia da Semana: 5

No exemplo acima, o dia da semana 5 representa a quinta-feira.

Da mesma forma que podemos obter os valores dos campos, podemos atribuir novos valores a esses campos por meio dos métodos set.

Há diversos métodos set em Calendar. O mais geral é o que recebe dois argumentos: o primeiro indica qual é o campo (usando as constantes de Calendar) e o segundo, o novo valor. Além desse método set, outros métodos set recebem valores de determinados campos; o set de três argumentos, por exemplo, recebe ano, mês e dia. Vejamos um exemplo de como alterar a data de hoje:

Calendar c = Calendar.getInstance();
c.set(Calendar.HOUR, 10); // fazemos hora valer 10
c.set(Calendar.MINUTE, 30); // fazemos minuto valer 30
c.set(2005, 12, 25); // mudamos a data para o Natal!

Outro método bastante usado é add que adiciona uma certa quantidade a qualquer campo do Calendar. Por exemplo, para adicionar um ano à data de hoje fazemos:

Calendar c = Calendar.getInstance();
c.add(Calendar.YEAR, 1); // adiciona 1 ao ano

Note que, embora o método se chame add, você pode usá-lo para subtrair valores também; basta colocar uma quantidade negativa no segundo argumento!

Os métodos after e before são usados para comparar o objeto Calendar em questão a outro Calendar. O método after devolverá true quando o Calendar em questão estiver num momento no tempo maior que o do Calendar passado como argumento. Por exemplo, after devolverá false se compararmos o Dia das Crianças com o Natal, pois o Dia das Crianças não vem depois do Natal:

Calendar c1 = new GregorianCalendar(2005, Calendar.OCTOBER, 12);
Calendar c2 = new GregorianCalendar(2005, Calendar.DECEMBER, 25);
System.out.println(c1.after(c2)); // imprime false

Analogamente, o método before verifica se o momento em questão vem antes do momento do Calendar passado como argumento. No exemplo acima, c1.before(c2) devolverá true, pois o Dia das Crianças vem antes do Natal.

Note que Calendar implementa a interface Comparable (que será explicada no final do artigo). Isso quer dizer que você pode usar o método compareTo para comparar dois calendários. No fundo, after e before usam o compareTo para dar suas respostas.

Por último, um dos problemas mais comuns quando lidamos com datas é verificar o intervalo entre duas datas. O método a seguir devolve o número de dias entre dois objetos Calendar. O cálculo é feito pegando a diferença entre as datas em milissegundos e dividindo esse valor pelo número de milissegundos em um dia:

public int diferencaEmDias(Calendar c1, Calendar c2) {
long m1 = c1.getTimeInMillis();
long m2 = c2.getTimeInMillis();
return (int) ((m2 - m1) / (24*60*60*1000));
}

java.util.Random

Gerar números aleatórios é uma tarefa muito comum, seja para gerar senhas temporárias, número de hash para identificar o cliente, etc.

A classe java.lang.Math conta com o método random, que gera um número entre 0 e 1. Gerar um número inteiro entre 0 e 100:

int x = (int) (Math.random() * 100);
System.out.println(x);

 

continua...



 




 
© 2003 - MundoJava - Todos os direitos reservados <design: www.id-art.com.br >