Operadores condicionais

&& (AND/E)

São utilizado para realizar combinações de expressões booleanas, por exemplo:


boolean condicao = true;
int valor = 1;

if(condicao && (valor > 0)) {
   // executa alguma coisa
}

No exemplo acima para que execute alguma coisa é necessário que a variável “condicao” seja true e a variável “valor” seja maior que zero.

Quando utilizado o operador && ele vai avaliar da esquerda para direita as operações e somente será verdadeiro se todas as operações forem verdadeiras.

Observação

Caso o operador encontrar alguma operação falsa ele não continuará avaliando as outras operações.

Assim podemos executar tranquilamente o código abaixo:

Cidade cidade = null;

if(cidade != null && cidade.getNome().equals("Cianorte")) {
   System.out.println("Cianorte");
} else {
   System.out.println("Não há cidade");
}

Será apresentado “Não há cidade” porque as condições são falsas e não houve problema cidade.getNome() porque ele não foi executado.

|| (OR/OU)

São utilizado quando alguma, não necessariamente todas, condições já satisfaça a condição, por exemplo:


boolean condicao = true;
int valor = 1;

if(condicao || (valor > 0)) {
   // executa alguma coisa
}

No exemplo acima para que execute alguma coisa é necessário que a variável “condicao” seja true ou a variável “valor” seja maior que zero.

Assim como o operador “and” o “or” também avalia da esquerda para direita as operações, no entanto assim que ele encontrar uma expressão verdadeira ele é considerado verdadeiro.

Observação
Quando utilizado o operador || as condições serão verificadas até que encontre uma condição verdadeira.

& (AND/E)

O Operador “&” é similar ao “&&” no entanto ele é um operador bit a bit, diferente do operador lógico, isso implica que ele fará a avaliação de todas as expressões mesmo que encontrei expressões falsas no caminho.

Segue abaixo um exemplo na prática da diferença dos operadoes:

    Cidade cidade = null;

    if(cidade != null && cidade.getNome().equals("Cianorte")) {
        System.out.println("Cianorte");
    } else {
        System.out.println("Não há cidade");
    }// imprime Não há cidade

    if(cidade != null & cidade.getNome().equals("Cianorte")) {
        System.out.println("Cianorte");
    } else {
        System.out.println("Não há cidade");
    }// lança uma NullPointerException

Isso ocorre porque o and lógico(&&) para a avaliação quando encontra uma expressão que resulta em falsa, já o and bit a bit(&) faz a avaliação completada das expressões independente do resultado.

| (OR/OU)

O operador “|” segue a mesma linha do “&”, como um operador bit a bit, no entanto é aplicado para instruções de or/ou.

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.