Pessoal eu sempre me confundo um pouco nisso
Qual a diferença em usar & e && e tambem | e ||?
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.
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.
valeu pessoal!
jah entendi