Diferença entre os operadores lógico && e &  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
Daniel Ilha
JavaBaby

Membro desde: 23/06/2006 11:42:08
Mensagens: 79
Localização: Porto Alegre
Offline

Prezados;]

Não consegui enteder a diferença de usar:

1) && ou &
2) || ou |


Agradeço desde já
Cabral
JavaTeenager
[Avatar]

Membro desde: 01/06/2005 09:10:59
Mensagens: 153
Localização: Arujá - SP
Offline

Olá,

o && voce compara as duas expressões:

exemplo

1 == 1 && 2 == 2 => só sera true se as duas condições forem verdadeiras.

o & é a mesma coisa mas ele compara bit a bit

com o || eu acredito que seja a mesma coisa:

1 ==1 || 2==2 > é true se uma das duas condições forem verdareiras.


Falou

Ricardo Cabral

** SCPN **
Dieval Guizelini
Virtual Machine Man
[Avatar]

Membro desde: 05/07/2006 14:39:44
Mensagens: 570
Localização: Curitiba - PR
Offline

Os operadores &&, || são lógicos, normalmente utilizados para avaliação de expressões lógicas.

Os operadores & e | são bit-wse, e operam com a lógica binária no nível de bits. Onde 0 equivale a falso e 1 a verdadeiro.

Exemplo:

0x55 & 0xf0 => 0x50.

Os operadores && e || atuam com o conceito de curto circuito.
Dependendo do resultado da primeira operação as segundas não são avaliadas. Exemplo:

true || ? == sempre true (não avalia o segundo operando).
false && ? == sempre false (não avalia o segundo operando).

fw

Sun Certified Java Programmer 5.0
[WWW]
neohacker
Virtual Machine Man
[Avatar]

Membro desde: 30/10/2006 15:23:14
Mensagens: 576
Localização: Santo André
Offline

Um se chama "Short-Circuit" (ou algo bem parecido com isso) que quer dizer que se vc usa "&&" ele avalia a primeira expressão e se for falsa ele nem chega a analizar a segunda tendo em vista que será impossível resultar em um resultado verdadeiro, no outro modo pelo que vc imagina ele vai analizar sempre as 2 opções, por isso é costume utlizar "&&" e "||" porque digamos que economize "processamento".

Acho que é isso, não deixem de me corrigir se estiver equivocado.
Espero ter ajudado


http//www.tecnologiaims.blogspot.com

↑ Grab this Headline Animator

http://www.imstechnology.blogspot.com
[Email] [WWW]
vitorpatriarcha
Debugger

Membro desde: 11/04/2006 09:22:31
Mensagens: 71
Offline

&& -- if(op1 && op2){} op1 e op2 são verdadeiros, avalia condicionalmente op2.
|| -- if(op1 || op2){} op1 ou op2 é verdadeiro, avalia condicionalmente op2

& -- if(op1 & op2){} op1 e op2 são ambos verdadeiros, sempre avalia op1 e op2
| -- if(op1 | op2){} op1 ou op2 é verdadeiro, sempre avalia op1 e op2.
JohnJohn
Debugger
[Avatar]

Membro desde: 17/10/2006 18:32:40
Mensagens: 59
Offline

Daniel Ilha wrote:
Não consegui enteder a diferença de usar:

1) && ou &
2) || ou |


se eu não estiver enganado

bit a bit
| e &

lógicos
|| e &&

a) (true | true)
dessa forma fará a leitura das duas

b) (true || true)
dessa forma fará a leitura apenas da primeira
pra que continuar sendo que a primeira já é true?

c) (false & true)
fará a leitura das duas

d) (false && true)
dessa forma fará a leitura apenas da primeira
pra que continuar sendo que a primeira já é false???



eu sempre desejei mudar o mundo, mas nunca me deram o código fonte ...
hoje tenho em minhas mãos: Bíblia!!!
Rulio
JavaBaby
[Avatar]

Membro desde: 22/08/2006 00:34:38
Mensagens: 94
Offline

só acrescentando...

com o operador &&, caso a primeira expressão seja FALSE o compilador nem perde tempo em verificar a segunda expressão.

A mesma coisa para o |, caso a primeira expressão for TRUE ele nem testa a segunda.

abraços.

Sun Certified Java Programmer 5.0
"Nada é simples demais que não possa ser abstraído, nada é complexo demais que não possa ser generalizado."
Dieval Guizelini
Virtual Machine Man
[Avatar]

Membro desde: 05/07/2006 14:39:44
Mensagens: 570
Localização: Curitiba - PR
Offline

Veja este código de exemplo:



Saída deste código:

avaliando &
Avaliando 1 - true
Avaliando 1 - false
Avaliando 2 - false
Avaliando 2 - true
Avaliando 3 - true
Avaliando 3 - true
avaliando &&
Avaliando 1 - true
Avaliando 1 - false
Avaliando 2 - false
Avaliando 3 - true
Avaliando 3 - true
5
3
2


O operador ^ representa o OU EXCLUSIVO.

fw

Sun Certified Java Programmer 5.0
[WWW]
Daniel Ilha
JavaBaby

Membro desde: 23/06/2006 11:42:08
Mensagens: 79
Localização: Porto Alegre
Offline

Rulio;

Se a primeira expressão for "true" ele não testará a segunda com o operador "|", fiquei com dúvida, pois nas respostas anteriores verifiquei que o teste fica somente na primeira se o operador for "||".

Me informe se estiver entendido errado.

um grande abraço a todos.
JohnJohn
Debugger
[Avatar]

Membro desde: 17/10/2006 18:32:40
Mensagens: 59
Offline

Daniel Ilha wrote:Rulio;

Se a primeira expressão for "true" ele não testará a segunda com o operador "|", fiquei com dúvida, pois nas respostas anteriores verifiquei que o teste fica somente na primeira se o operador for "||".


daniel,
você está correto ...
deve ter sido um erro de digitação do nosso amigo ...

eu sempre desejei mudar o mundo, mas nunca me deram o código fonte ...
hoje tenho em minhas mãos: Bíblia!!!
neohacker
Virtual Machine Man
[Avatar]

Membro desde: 30/10/2006 15:23:14
Mensagens: 576
Localização: Santo André
Offline

Se vc tiver os 2 operadores ele só avaliará o 1º e dependendo da resposta ai sim o segundo com somente 1(um) operador ele sempre avaliará as 2 expressões

"&&" Avalia a 1ª e depois somente se a 1ª for verdadeira ele analiza a 2ª

http//www.tecnologiaims.blogspot.com

↑ Grab this Headline Animator

http://www.imstechnology.blogspot.com
[Email] [WWW]
Daniel Ilha
JavaBaby

Membro desde: 23/06/2006 11:42:08
Mensagens: 79
Localização: Porto Alegre
Offline

Valeu pessoal

Espero ficar rápido como vocês um dia!
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Em Ada existem os operadores "and" (que equivale ao "&" do Java) e "and then" (que equivale ao "&&"), assim como "or" ("|") e "or else" ("||"). Acho que nesse ponto Ada é mais fácil de entender que C++ ou Java (onde você tem de olhar esses detalhes microscópicos).





(Em Ada o operador /= quer dizer "diferente de", e o operador "=" quer dizer "igual")
[WWW]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team