Precedência do operador Java

A precedência do operador determina a ordem em que os operadores em uma expressão são avaliados.

Antes de começar a ler este artigo, você deve ter um conhecimento básico de Operadores Java.

Agora, dê uma olhada na declaração abaixo:

 int myInt = 12 - 4 * 2;

Qual será o valor de myInt? Será (12 - 4)*2, isto é , 16? Ou será 12 - (4 * 2), isto é , 4?

Quando dois operadores compartilham um operando comum, 4neste caso, o operador com a precedência mais alta é operado primeiro.

Em Java, a precedência de *é maior do que -. Portanto, a multiplicação é realizada antes da subtração e o valor de myInt será 4.

Tabela de precedência do operador

A tabela a seguir lista a precedência de operadores em Java; quanto mais alto ele aparecer na tabela, maior será sua precedência.

Precedência do operador Java
Operadores Precedência
incremento e decremento pós-fixados ++ --
incremento e decremento de prefixo e unário ++ -- + - ~ !
multiplicativo * / %
aditivo + -
mudança << >> >>>
relacional < > <= >= instanceof
igualdade == !=
bit a bit AND &
OR exclusivo bit a bit ^
bit a bit inclusivo OU |
E lógico &&
OU lógico ||
ternário ? :
tarefa = += -= *= /= %=
&= ^= |= <<= >>= >>>=

Exemplo: precedência do operador

 class Precedence ( public static void main(String() args) ( int a = 10, b = 5, c = 1, result; result = a-++c-++b; System.out.println(result); ) )

Produto :

 2

A precedência do operador do prefixo ++é maior do que a do -operador de subtração. Conseqüentemente,

 resultado = a - ++ c - ++ b;

é equivalente a

 resultado = a - (++ c) - (++ b);

Ao lidar com vários operadores e operandos em uma única expressão, você pode usar parênteses como no exemplo acima para maior clareza. A expressão entre parênteses é avaliada primeiro.

Associatividade de operadores em Java

Se uma expressão tiver dois operadores com precedência semelhante, a expressão será avaliada de acordo com sua associatividade (da esquerda para a direita ou da direita para a esquerda). Vamos dar um exemplo.

 a = b = c;

Aqui, o valor de c é atribuído à variável b. Então, o valor de b é atribuído à variável a. Por quê? É porque a associatividade do operador = é da direita para a esquerda.

A tabela abaixo mostra a associatividade dos operadores Java junto com sua associatividade.

Precedência e associatividade do operador Java
Operadores Precedência Associatividade
incremento e decremento pós-fixados ++ -- da esquerda para direita
incremento e decremento de prefixo e unário ++ -- + - ~ ! direita para esquerda
multiplicativo * / % da esquerda para direita
aditivo + - da esquerda para direita
mudança << >> >>> da esquerda para direita
relacional < > <= >= instanceof da esquerda para direita
igualdade == != da esquerda para direita
bit a bit AND & da esquerda para direita
OR exclusivo bit a bit ^ da esquerda para direita
bit a bit inclusivo OU | da esquerda para direita
E lógico && da esquerda para direita
OU lógico || da esquerda para direita
ternário ? : direita para esquerda
tarefa = += -= *= /= %=
&= ^= |= <<= >>= >>>=
direita para esquerda

Você não precisa memorizar tudo aqui. Na maioria das vezes, a precedência e a associatividade dos operadores fazem sentido por si só. Você sempre pode voltar a este artigo para referência em caso de dúvida. Além disso, você pode usar parênteses se achar que isso torna seu código mais fácil de entender.

Artigos interessantes...