Oi,
    O operador & pode ser usado tanto para operação entre bits como operador
lógico.
    No exemplo dado pelo Francis, o que é feito é o seguinte:

00000000000000000000000000000001
00000000000000000000000000000010 +
----------------------------------
00000000000000000000000000000000 = 0

Isso porque a comparação e feito casa por casa:
1 & 0 = 0 //Verdadeiro E Falso = Falso
0 & 1 = 0 //Falso E Verdadeito = Falso
0 & 0 - 0 //Falso E Falso = Falso
...

Para que o resoltado seja igual a 3, opdemos utilizar o outro operador de
bits |
que funcionará como OU.

int a = 1; // formato binario: 00000000000000000000000000000001
int b = 2; // formato binario: 00000000000000000000000000000010
int c = (int) a | b;

00000000000000000000000000000001
00000000000000000000000000000010 +
----------------------------------
00000000000000000000000000000011 = 3

1 | 0 = 1 //Verdadeiro OU Falso = Verdadeiro
0 | 1 = 1 //Falso OU Verdadeito = Verdadeiro
0 | 0 = 0 //Falso OU Falso = Falso
...

O operador & e | podem ser usados como operadores lógicos. Por exemplo:

if ( this.metodo1() && this.metodo2() ){

Neste caso, se o método 1 for falso, não é executado o metodo2 pois como um
lado já esta falso ele não testa o outro metodo. Mas caso queira executar os
dois metodos
obrigatóriamente pode usar &

if ( this.metodo1() & this.metodo2() ){

Isso vale para | também

if ( this.metodo1() || this.metodo2() ){

Se o primeiro for verdadeiro, ele não executa o segundo método pois já sabe
qual o resultado
lógico. Para executar os dois, usa-se

if ( this.metodo1() | this.metodo2() ){

Espero ter ajudado
[]'s
Ricardo DC



----- Original Message -----
From: <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Friday, October 11, 2002 11:08 AM
Subject: RE: [java-list] &


& é um operador binario, e && é um operador lógico... ou seja, quando se usa
& eu estou trabalhando com bits, ex:

int a = 1; // formato binario: 00000000000000000000000000000001
int b = 2; // formato binario: 00000000000000000000000000000010
int c = (int) a & b;

resultado em c: 3

00000000000000000000000000000001
00000000000000000000000000000010 +
----------------------------------
00000000000000000000000000000011 = 3

Neste caso eu estou ligando os bits...

O operador logico && é usado para comparações... ex:

if (a == b && c < a) { // Se 'a' for igual a 'b' "E" 'c' for menor que 'a',
a condição é verdadeira...
// faz alguma coisa...
}


Acho que é isso!

Abcs,

Francis

------------------------------ LISTA SOUJAVA ----------------------------
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
historico: http://www.mail-archive.com/java-list%40soujava.org.br
para sair da lista: envie email para [EMAIL PROTECTED]
-------------------------------------------------------------------------


Esta mensagem foi verificada pelo E-mail Protegido Terra.
Scan engine: VirusScan / Atualizado em 09/10/2002 / Versão: 1.3.13
Proteja o seu e-mail Terra: http://www.emailprotegido.terra.com.br/




------------------------------ LISTA SOUJAVA ---------------------------- 
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP 
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
historico: http://www.mail-archive.com/java-list%40soujava.org.br
para sair da lista: envie email para [EMAIL PROTECTED] 
-------------------------------------------------------------------------

Responder a