&, &&, |, ||. Qndo usar?

Pessoal eu sempre me confundo um pouco nisso
Qual a diferença em usar & e && e tambem | e ||?

Talvez te ajude.

http://www.guj.com.br/posts/list/58646.java

Olá amigo.
Suponhamos que temos a tal condição:
if(idade > 70 && sexo == masculino)

Concorda que o if só será executado caso a idade seja maior que 70 e o sexo masculino?

Basicamente o programa vai checar se a idade é maior que 70, caso não seja, ele já pára na hora de executar! Isso no caso do &&.

Agora suponhamos que temos:
if(idade > 70 & sexo == masculino)

O programa ao invés de descartar logo de cara a condição toda caso idade seja menor que 70, também checará a condição de lá, ou seja, ‘sexo == masculino’.

Mas aí você pergunta, e qual a vantagem disso?
A vantagem é nesse caso:
if(idade > 70 & ++idade == 69 )

Ele está além de fazendo a condição, estará pré-incrementando idade em 1! Assim isso mexerá na variável idade, o que significará que o operador lógico AND “&” deve ser usado pois nós vamos querer que a o compilador cheque AMBAS as condições.

Veja a seguinte tabela de operadores lógicos:

&& E (“logical AND”) a && b
retorna true se a e b forem ambos true. Senão retorna false. Se a for false, b não é avaliada.

& E (“boolean logical AND”) a & b
retorna true se a e b forem ambos true. Senão retorna false. Ambas expressões a e b são sempre avaliadas.

|| OU (“logical OR”) a || b
retorna true se a ou b for true. Senão retorna false. Se a for true, b não é avaliada.

| OU (“boolean logical inclusive OR”) a | b
retorna true se a ou b for true. Senão retorna false. Ambas expressões a e b são sempre avaliadas.

^ OU EXCLUSIVO (“boolean logical exclusive OR”) a ^ b
retorna true se a for true e b for false ou vice-versa. Senão retorna false

! NÃO (“logical NOT”) !a
retorna true se a for false. Senão retorna false

Abraços.

11 curtidas

Havendo mais de uma condição no seu if, usando os operadores de abreviação ( && e ||) pode ser que a sua 2ª condição nao seja avaliada:

ex: if ( objeto instanceof String && objeto.length > 0 )

se o objeto passado não for uma String, a primeira condição falha e a segunda condição NAO será avaliada.

no caso do OU abreviado (||), se a primeira condição for VERDADEIRA, a segunda condição NAO é analisada. Se a primeira condição falhar, entao a segunda condição sera analisada.

Olha o && e o || é usado pra comparações lógicas.

Já o & e o |. Segundo a Sun é usado para comparações Bit a Bit, mas também pode ser usado para fazer verificações lógicas até o final.

1 curtida

valeu pessoal!
jah entendi