Qual a diferença de usar os operadores lógicos booleanos normais -> && e || dos inclusivos -> & | ?
&& || vs & |
6 Respostas
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:
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.
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: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.if (obj != null & obj.getAlgumaCoisa() == 3) ...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
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…
Á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