
Gráfico de comparação
Base para Comparação | E | && |
---|---|---|
Operador | É um "Operador bit a bit". | É um "operador lógico". |
Avaliação | Avalia os lados esquerdo e direito da expressão. | Apenas avalia o lado esquerdo da expressão. |
Opera em | Ele opera em "tipo de dados booleano", bem como opera em "bits". | Ele opera somente em "tipo de dados booleano". |
Usar | Use para verificar a condição lógica e também usado para mascarar certos bits, como bits de paridade. | Usado apenas para verificar a condição lógica. |
Definição de & (Bitwise AND)
Este operador '&' é usado como um operador lógico (&) e um operador bit a bit. Ele funciona em dados booleanos e binários. Quando o operador & é usado como operador lógico, resulta em “verdadeiro” se ambos os lados da expressão da avaliação forem verdadeiros, senão retorna “falso”. Ele permite que o compilador avalie o lado da expressão. Ou seja, mesmo que o lado esquerdo da expressão seja falso, ele avalia o lado direito da expressão.
Nos deixa entender isso com um exemplo.
inta = 4, b = 5; system.out.println ((a == 6) & (b ++ == 6)); system.out.println ("b =" + b); // saída falsa b = 5
Aqui, ao avaliar o lado esquerdo da expressão (a == 6), resulta em false, o operador & então avalia o lado direito da expressão (b ++ == 6) como resultado, o valor de incrementos b.
Quando '&' é usado como um 'operador bit a bit', primeiro ele converte os dois operandos em formato binário e, em seguida, opera nele usando & operator, bit por bit. Após a operação, o resultado obtido é em formato binário, que é então convertido em decimal. Qualquer bit que seja 0 em qualquer um dos operandos resulta em 0. Se ambos os bits dos operandos forem 1, então o bit resultante é 1. O operador bit a bit é governado pela mesma tabela de verdade que por seu operador lógico.
Vamos ver o funcionamento bit a bit do operador.
int a; a = 3 e 4; // 011 e 100 = 000 system.out.println ("a =" + a); // output a = 0
Aqui, os valores decimais 3 e 4 são inicialmente convertidos em sua forma binária, e então o operador & bit a bit executa a operação & neles bit a bit. O resultado obtido é em forma binária, que é então convertido para a forma decimal novamente.
Definição de && (curto-circuito AND)
Este operador && funciona totalmente como um operador lógico. Ele opera somente no tipo de dados booleano. É também chamado de operador de curto-circuito. Como só verifica o lado esquerdo da expressão. Se o lado esquerdo da expressão resultar em falso, não se preocupará em avaliar o lado direito da expressão.
Nos permite entender o funcionamento do operador && com um exemplo.
inta = 4, b = 5; system.out.println ((a == 6) && (b ++ == 6)); system.out.println ("b =" + b); // saída falsa b = 4
Aqui, como a condição (a == 6) é falsa, o operador && não avalia a expressão (b ++ == 6) como resultado, o valor de b não é incrementado.
Principais diferenças entre & e &&
- O operador & é um operador lógico e bit a bit, já que opera tanto em booleanos quanto em dados binários, enquanto o operador && é apenas um operador lógico, pois opera apenas em um tipo de dado booleano.
- O operador & avalia o lado da expressão para obter o resultado final, enquanto o operador && avalia apenas o lado esquerdo da expressão e, se for falso, nem avalia o lado direito da expressão.
Nota:
Ao avaliar o tipo de dados booleano, ambos os operadores resultam “true” somente se o operando for verdadeiro, senão retorna “false”.
Conclusão:
O operador & e &&, ambos são usados para avaliar a condição booleana, enquanto o operador & também é usado para a operação bit a bit. Quando é necessário avaliar o lado da expressão, o operador & é usado, podemos usar o operador &&.