&& || vs & |

6 respostas
M

Qual a diferença de usar os operadores lógicos booleanos normais -> && e || dos inclusivos -> & | ?

6 Respostas

L

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

guisantogui

o Sr. Google me deu este resultado como primeiro na busca!
http://www.criarweb.com/artigos/643.php

as vezes vale a pena pesquisar! :thumbup:

E

a && b pode ser lido como “execute a, e se for verdadeiro, execute b”. Ou seja, a && b pode ser usado em um teste como o seguinte:

if (obj != null && obj.getAlgumaCoisa() == 3) ...

porque ele só executa obj.getAlgumaCoisa() se obj != null, e isso não provocará um NullPointerException se obj for null.

a & b pode ser lido como “execute a e execute b, sempre, não importando se algum deles é false logo de cara.”
OU seja, se você fizer isto:

if (obj != null & obj.getAlgumaCoisa() == 3) ...

seu programa vai capotar se obj == null.

Não quer dizer que você deva sempre usar && (até porque às vezes é necessário executar a e b, independente de se algum deles retornar false), mas é bom para você aprender a usar menos ifs nos seus programas. Usar && evita você usar 2 ifs encadeados.

Alexandre_Saudate
entanglement:
a && b pode ser lido como "execute a, e se for verdadeiro, execute b". Ou seja, a && b pode ser usado em um teste como o seguinte:
if (obj != null && obj.getAlgumaCoisa() == 3) ...
porque ele só executa obj.getAlgumaCoisa() se obj != null, e isso não provocará um NullPointerException se obj for null. a & b pode ser lido como "execute a e execute b, sempre, não importando se algum deles é false logo de cara." OU seja, se você fizer isto:
if (obj != null & obj.getAlgumaCoisa() == 3) ...
seu programa vai capotar se obj == null.

Não quer dizer que você deva sempre usar && (até porque às vezes é necessário executar a e b, independente de se algum deles retornar false), mas é bom para você aprender a usar menos ifs nos seus programas. Usar && evita você usar 2 ifs encadeados.

Só complementando...

Os operadores & e | servem como operadores binários, também, de maneira que eles fazem e/ou com os bits de um número. Por exemplo:

int a = 3; //Binário: 111
int b = 2; //Binário: 010
System.out.println(a & b); //Imprime 2

System.out.println(a | b); //Imprime 3

[]´s

M

Caramba einh, tem um pessoal aki que gosta de encher o saco!

Velhoo, se vc não quiser responder, não responda. Mas nãooo, o cara tem o trabalho de responder o post só pra encher o saco… não entendo isso…

M

ÁHH, e valeu ai quem me respondeu com o intuito educacional, eu prefiro postar uma duvida aki pq acho que as respostas são bem mais diretas e completas, diferentemente do que iria acontecer se eu procurasse um material na net

Criado 10 de junho de 2010
Ultima resposta 10 de jun. de 2010
Respostas 6
Participantes 5