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] -------------------------------------------------------------------------