Você já olhou uma expressão em Java e pensou:
"Ué, por que esse resultado saiu diferente do que eu imaginei?".
Calma, você não está sozinho.
Muitos programadores iniciantes (e até alguns experientes) caem em armadilhas causadas por um conceito fundamental: precedência de operadores.
Neste post, vamos aprender a decifrar como o Java interpreta suas expressões - e garantir que você nunca mais seja surpreendido por um cálculo misterioso no console.
O que é precedência de operadores?
Em Java (e em praticamente qualquer linguagem de programação), precedência é a ordem em que os operadores são avaliados em uma expressão.
Assim como na matemática, nem tudo acontece da esquerda para a direita. Existem regras. E quem não domina essas regras, corre sério risco de errar mesmo com código certo.
Uma situação real: o erro clássico
Imagine a expressão:
Se você pensou que o resultado seria 30, saiba que caiu numa pegadinha comum.
O Java vai primeiro resolver a multiplicação (5 * 2 = 10) e depois somar com 10. Ou seja:
Esse é o poder (e o perigo) da precedência.
Tabela de precedência (simplificada)
Nível | Operadores | Tipo | Associatividade |
---|---|---|---|
1 | () | Parênteses | - |
2 | *, /, % | Aritméticos | Esquerda → Direita |
3 | +, - | Aritméticos | Esquerda → Direita |
4 | >, <, >=, <= | Comparação | Esquerda → Direita |
5 | ==, != | Igualdade | Esquerda → Direita |
6 | && | Lógico AND | Esquerda → Direita |
7 | || | Lógico OR | Esquerda → Direita |
8 | = | Atribuição | Direita → Esquerda |
Parênteses: seu melhor aliado
Quando em dúvida, use parênteses. Eles não só evitam erros como também deixam seu código mais legível para outras pessoas (e para você mesmo no futuro).
Precedência vs Associatividade
Além da precedência, existe outro conceito importante: associatividade.
Isso define a ordem de avaliação quando dois operadores têm a mesma precedência. Exemplo clássico com operadores de atribuição:
Aqui, a avaliação acontece da direita para a esquerda. Primeiro c = 5, depois b = c, depois a = b.
Exemplos práticos
Qual o valor final?
Resposta: z = 10 + (5 * 2) = 20
E agora?
Resposta: z = (10 + 5) * 2 = 30
Dica de ouro
Quando seu código estive dando resultados inesperados, pense: "Estou respeitando a precedência dos operadores?".
Essa simples pergunta pode salvar horas de dor de cabeça.
Saber programar é mais do que escrever comando que o computador entende - é escrever instruções que fazem sentido, seguem regras, e produzem exatamente o que você espera.
Precedência de operadores em Java é um desses fundamentos invisíveis que moldam o comportamento do seu código. Aprenda, experimente, teste, erre e corrija - porque é assim que se constrói um verdadeiro programador.
E nunca subestime o poder de um par de parênteses. Eles podem transformar um erro silencioso em um código brilhante.
Comentários
Postar um comentário