Antes de tudo, vamos esclarecer uma coisa.
O java tem operadores lógicos e operadores bitwise.
Os operadores lógicos só trabalham com boolean, e podem ou não apresentar a característica de short circuit. São eles
&& (e) || (ou) ! (not) & (e, sem short circuit), | (ou, sem short circuit)
Os operador bitwise trabalham com tipos integrais. O que eles fazem, é comparar cada bit dos dois integrais passados, usando a operação desejada. São eles:
& (e) | (ou) ^ (ou exclusivo, XOR) ~ (NOT)
Embora os operadores & e | sejam iguais, note que eles mudam de função de acordo com o contexto.
Ou seja:
boolean x = a | b;
É diferente de:
int x = a | b;
Agora, vamos lá, o que é a característica do curto-circuito?
Curto-circuito evita que parte da expressão seja avaliada, caso o resultado dela já seja conhecido. Lembre-se da tabela verdade:
Verdadeiro OU QualquerCoisa = Verdadeiro
Falso E QualquerCoisa = Falso
Se inverter os termos isso também vale, mas o Java avalia da direita para a esquerda. Ou seja, suponha que você tenha:
if (idade >= 18 && mediaDosAlunos() < 5)
facaAlgo();
Haveria necessidade de calcular a média dos alunos, caso a idade fosse < 18? Não, a condição se tornaria falsa e, como temos um E, temos CERTEZA que, independente da média, o resultado da expressão será falso, e o programa não entrará no IF. Da mesma forma:
if (idade >= 18 || mediaDosAlunos() < 5)
facaAlgo();
Não haveria necessidade de calcular a média, caso a idade fosse >= 18. Como a primeira parte da expressão seria verdadeira, independente da média, entraríamos no IF, já que se trata de um ou. Com a opção de curto circuito, o Java efetivamente não irá chamar o método mediaDosAlunos(). Se você usar o operador sem curto circuito, ele irá chamar, avaliar aquele lado da expressão, mas o resultado será o mesmo.
Em geral, não temos razões para eliminar o curto circuito. Eu mesmo, nunca precisei.
Agora vamos as operações bitwise. O que elas fazem é realizar E, OU, etc, nos vários bits de um número integral.
Suponha:
int x = 10 = 1010
int y = 7 = 111
x & y =
1010 &
0111
0010
x | y =
1010 |
0111
1111
Entendeu?