A Declaração if
Muitas vezes queremos executar um bloco de código sobre certas circunstâncias. Então a declaração if permite que nossa aplicação execute um bloco particular de código e retorna um boolean em tempo de execução.
Por exemplo, imagine que nós temos uma função que utiliza a hora do dia, um inteiro com o valor entre 0 e 23 para mostrar uma mensagem para o usuário:
1 2 |
If(horaDoDia < 12) System.out.println(“Bom dia”); |
Se a hora do dia é menor que 12, então a mensagem será mostrada. Digamos que também queremos incrementar um valor no manhaContadorCumprimento toda vez que o agradecimento é mostrado.
Nós podemos escrever a declaração if duas vezes, mas podemos escrever mais de uma linha no bloco if.
1 2 3 4 |
If(horaDoDia < 12){ System.out.println(“Bom dia”); manhaContadorCumprimento ++; } |
O bloco permite múltiplas declarações para ser executado baseado na avaliação do if. Note que a primeira declaração não contém um bloco, mas poderia ter.
Para legibilidade, é considerado uma boa prática colocar o bloco (as chaves) na declaração if, como em outros que também não são necessárias.
Cuidado com a Indentação e Chaves
1 2 3 |
If(horaDoDia < 12) System.out.println(“Bom dia”); manhaContadorCumprimento++; |
Baseado na indentação, você pode achar que a variável manhaContadorCumprimento será apenas incrementada se a horaDoDia for menor que 12, mas isso não é o que o código faz. Irá mostrar a mensagem “Bom dia” somente se a condição for verdadeira, mas o incremento sempre será executado.
Lembre-se que o Java, diferente de outras linguagens, pressionar a tecla tab produz apenas espaços em branco e não são considerados na execução. Então sempre ignores as indentações e preste atenção nos blocos de chaves.
A Declaração if- if else-else
Se você quiser mostrar uma mensagem diferente da condição horaDoDia < 12, podemos fazer assim:
1 2 3 4 5 6 |
If(horaDoDia < 12){ System.out.println(“Bom dia”); } If(horaDoDia >= 12){ System.out.println(“Boa tarde”); } |
Isso parece redundante, já que escrevemos a variável horaDoDia duas vezes. Isso pode ser um desperdício de computação, porque expressões booleans podem ser custosas. Mas o Java oferece uma alternativa para isso:
Vamos voltar ao exemplo:
1 2 3 4 5 |
If(horaDoDia < 12){ System.out.println(“Bom dia”); } else { System.out.println(“Boa tarde”); } |
O código tem duas opções, com a avaliação booleana apenas uma vez. É assim que o operador else ajuda para que a declaração somente execute uma vez a verificação booleana.
Pegando esse exemplo podemos incrementar mais verificações e refinar ainda mais as condições de execução:
1 2 3 4 5 6 7 |
If(horaDoDia < 12){ System.out.println(“Bom dia”); } else if(horaDoDia <18) { System.out.println(“Boa tarde”); } else { System.out.println(“Boa noite”); } |
Nesse exemplo, o Java continuará a processar até encontrar uma declaração if que tem a avaliação true. Se nenhuma das duas expressões forem true, a execução continuará até o bloco else.
Cuidado ao criar blocos if porque podem acontecer de alguns blocos nunca serem executados:
1 2 3 4 5 6 7 |
If(horaDoDia < 18) { System.out.println(“Boa tarde”); } else if (horaDoDia < 12) { System.out.println(“Bom dia”); //nunca executado } else { System.out.println(“Boa noite”); } |
Se o horário for menor que 12, o comportamento será diferente do código anterior. Veja se você consegue entender o porquê do código marcado como “nunca executado”, nunca será executado.
Veja que é muito simples o motivo, qualquer horário menor que 18 será executado no primeiro bloco, e o segundo bloco que é menor que 12 nunca será executado porque 12 é menor que 18.
Preste atenção nesses códigos:
1 2 3 4 |
int x = 1; if(x) { //não compila .... } |
Esse código não compila porque o Java diferente de outras linguagens de programação não considera o valor 1 como verdadeiro (true) e 0 como falso (false).
1 2 3 4 |
int x = 1; if(x = 5) { //não compila ... } |
Preste atenção que a verificação deve ser feito com dois sinais de igualdade (==) e não um (=) como está no exemplo, por essa razão que o programa não compila.
Fonte: OCA – Oracle Certified Associate Java SE 8 Programmer I – Study Guide
Deixe um comentário