Diferença entre & e && em Java
 
Um operador em Java é um símbolo que pode realizar alguma operação desejada em um conjunto de valores. Java tem diferentes tipos de operadores como lógico, aritmético, bit a bit e muito mais.
Neste tutorial, tentaremos estudar e entender a diferença entre o operador & e && em Java.
O operador & é um operador bit a bit. Operadores bit a bit são usados basicamente para trabalhar e manipular bits individuais dos números. Ele opera em ambos os lados do operador. O operador bit a bit & é um operador binário que executa a operação AND bit a bit em seus operandos.
O código a seguir demonstra o uso do operador &.
public class operators {
  public static void main(String[] args) {
    int a = 5;
    int b = 7;
    System.out.println("a&b = " + (a & b)); // 0101 & 0111=0101 = 5
  }
}
Resultado:
a& b = 5
O && é o operador lógico AND que trabalha com operandos booleanos. Como o nome sugere, os operadores lógicos podem realizar a operação lógica e combinar duas ou mais condições. Eles podem ser usados com qualquer tipo de tipo de dados.
O operador lógico && retorna verdadeiro quando ambas as condições são verdadeiras. Ele avalia os operandos da esquerda para a direita. Ele converte cada operando em um valor booleano e retorna o valor original após a operação.
O código a seguir demonstra o operador &&.
import java.io.*;
class Logical_Operator {
  public static void main(String[] args) {
    int a = 10, b = 20, c = 20 System.out.println("Var1 = " + a);
    System.out.println("Var2 = " + b);
    System.out.println("Var3 = " + c);
    if ((a < b) && (b == c)) {
      System.out.println("True Conditions");
    } else
      System.out.println("False conditions");
  }
}
Resultado:
A = 10
B = 20
C = 20
True Conditions
No exemplo acima, ambas as condições são verdadeiras. É por isso que True Conditions é impresso. Mesmo se um deles fosse falso, então False Conditions teria sido publicado.