Happy New Year

Após muito tempo sem postar nada, consegui um breve momento para postar meus desejos de feliz ano-novo!

import java.util.Calendar;

public class HappyNewYear {
	public static void main(String[] args) {
		Calendar calendar = Calendar.getInstance();
		int field = calendar.get(Calendar.YEAR) + 1;
		System.out.printf("Happy New Year in %d\n", field);
	}
}

Muito sucesso a todos neste ano novo que se segue, seja com a continuidade dos projetos que estamos tocando quanto aos novos projetos que planejamos começar (e isso vale tanto pessoal quanto profissionalmente).

Este post foi inspirado por este do VidaDeProgramador: http://vidadeprogramador.com.br/2011/12/22/previsoes-para-2012/

,

Deixe um comentário

Por que é preferível utilizar BigDecimal a double.

Para descontrair um pouco, vou colocar aqui um artigo onde descrevo minha predileção ao uso do BigDecimal ao uso da primitiva double ou de seu wrapper Double.
O texto é baseado num post que coloquei no forum da equipe que trabalho numa resposta que postei no GUJ.

Leia o resto deste post »

,

2 Comentários

JVisualVM – Parte 01

Primeiramente, precisamos que esteja com o ambiente preparado.

Obs.: Para montar este tutorial, estou utilizando o sistema operacional Windows. Caso você utiliza-se de linux, pequenas diferenças devem ocorrer, mas você usa linux, logo, não terá dificuldades em adaptar-se.

Caso já possua a JDK 6 instalada, poderá encontrar uma versão da JVisualVM no caminho:
[caminho_de_instalacao_JDK]\bin\jvisualvm.exe

Não há versões da JVisualVM em versões anteriores do Java.

Caso prefira, também pode baixar a JVisualVM da internet através do site: http://visualvm.java.net/

A descrição que encontra-se em http://download.oracle.com/javase/6/docs/technotes/tools/share/jvisualvm.html diz bem o que a ferramenta faz:

“Java VisualVM is an intuitive graphical user interface that provides detailed information about Java technology-based applications (Java applications) while they are running on a given Java Virtual Machine (JVM*). The name Java VisualVM comes from the fact that Java VisualVM provides information about the JVM software visually.
Java VisualVM combines several monitoring, troubleshooting, and profiling utilities into a single tool. For example, most of the functionality offered by the standalone tools jmap, jinfo, jstat and jstack have been integrated into Java VisualVM. Other functionalities, such as some of those offered by the JConsole tool, can be added as optional plug-ins.”

Ok.
Feitas as devidas apresentações, utilizarei a VisualVM que encontra-se na própria JDK 6.
Leia o resto deste post »

, ,

1 Comentário

Futuras publicações

Pretendo começar uma série de artigos sobre assuntos que acho interessante e que sempre vejo alguém com dificuldade.
Minhas intenções não são esgotar esses assuntos, mas partilhar minhas experiências.

Assim que for tratando os assuntos, irei “linká-los” aqui.

A ordem dos artigos será, quase certamente, aleatória e possivelmente serão abordados em mais de um post.

Também pretendo recomeçar um antigo projeto meu que sempre recoloco na geladeira…
Mas issó é assunto para um post futuro (primeiro, quero tirá-lo da geladeira, depois sim, comentarei mais sobre o mesmo).

,

Deixe um comentário

Falando sobre estruturas de repetição (Loop)

Vi certa vez uma discussão sobre os tipos de loops (estruturas de repetição) do Java:
for, while e do-while.
O que tipicamente chamamos de foreach é um caso especial do for, que não tratarei neste post.

Por definição, todos são loops que finalizam sob uma certa condição, ou motivados por um break.

Mas há nuances que as diferenciam:

Algumas pré-definições são importantes:

  • algoASerExecutadoAntesDeTudo: É alguma instrução que deve ocorrer antes da primeira validação da condição que indica se uma iteração ocorrerá ou não..
  • condicaoDePermanencia: Erroneamente chamada de condição de saída (IMHO)¹, é a condição que indica se haverá iteração dentro do loop.
  • iteracao: Alguma instrução que será repetida enquando a condicaoDePermanencia indicar que deve ser repetida.
  • algoASerExecutadoAoFimDaIteracao: Ao final de cada iteracao e antes de uma nova validação da condicaoDePermanencia, as instruções contidas aqui serão executadas.

Destes itens, o único que eu diria ser obrigatório é a condicaoDePermanencia.
Todos os demais são opcionais E podem ser totalmente suprimidos.

FOR
Comumente associado a uma sequência definida de repetições, com um ponto de início indicando uma variável de controle (algoASerExecutadoAntesDeTudo),
uma condição comumente validada com a variável de controle (condicaoDePermanencia) e uma alteração da variável de controle (algoASerExecutadoAoFimDaIteracao).
Definem a execução das iterações.
Entretanto, a variável de controle pode ser suprimida, como quando utlizamos Iterator que tem esse controle internamente (mas ,ainda assim, somos obrigados a alterar a mesma com um iterator.next()).
A condicaoDePermanencia é verificada e pode impedir que a primeira iteração ocorra, finalizando o loop.

//Sintaxe do for
for(algoASerExecutadoAntesDeTudo; condicaoDePermanencia; algoASerExecutadoAoFimDaIteracao) {
	iteracao
}

WHILE
É um loop clássico a ser executado por N motivos. Pode substituir um loop for em qualquer momento, mas sua leitura torna-se um pouco mais lenta, logo é preferível para casos menos específicos.
algoASerExecutadoAoFimDaIteracao é, geralmente suprimido ou está totalmente contido dentro da iteracao.
A condicaoDePermanencia é verificada e pode impedir que a primeira iteração ocorra, finalizando o loop.

//Sintaxe do while
algoASerExecutadoAntesDeTudo
while(condicaoDePermanencia) {
	iteracao
	algoASerExecutadoAoFimDaIteracao
}

DO-WHILE
É um tipo muito específico de loop, onde a primeira ocorrência SEMPRE ocorrerá, independentemente de qualquer coisa.
Apenas ao fim da primeira iteração que a condicaoDePermanencia é testada.
Porém, da mesma forma que o while, algoASerExecutadoAoFimDaIteracao é, geralmente suprimido ou está totalmente contido dentro da iteracao.

//Sintaxe do do-while
algoASerExecutadoAntesDeTudo
do {
	iteracao
	algoASerExecutadoAoFimDaIteracao
}while(condicaoDePermanencia);

Olhando desta maneira vemos que qualquer loop for pode ser traduzido para um loop while e vice-versa. A única alteração se dá pela clareza da leitura do código.
Já o do-while possui uma pequena diferença em relação aos outros dois. A primeira iteração SEMPRE irá ocorrer, enquanto que, para o while e o for, a condicaoDePermanencia será executada antes da primeira iteração e poderá impedir que qualquer iteração ocorra.

¹ Eu chamo de condição de permanência, pois para ser válida precisa ter um valor verdadeiro. Ou seja, só vai terminar o ciclo de iterações quando a condição for falsa.

, , ,

Deixe um comentário

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

Join 31 other followers