Estou estudando Java e tem uma tabela de operadores que está escrito a ordem de precedência e a associatividade do operador. Alguém sabe me dizer qual a diferença e como funciona?
A diferença entre o que?
Como funciona o que exatamente?
Eu queria saber o que é associatividade e o que é ordem de precedência de operadores.
Tipo um operador é associado da direita para esquerda e tem a ordem de precedência de esquerda para direita…
Eu confesso que nunca tinha pensado na associatividade de operadores, mas conseguir entender a definiçao vendo esse tutorial: http://cs-fundamentals.com/java-programming/java-operators-precedence-and-associativity.php
Em resumo, precedência é um conceito mais comum, já que aparece na matemática de escola. Se tem vários operadores numa mesma expressao, o de maior precedência será calculado antes, por exemplo:
// operador * tem precedência maior que +
2 * 2 + 3 * 3 == 13
// a expressao acima é equivalente a
(2 * 2) + (3 * 3) == 13
// se + e * tivessem a mesma precedência, seria o equivalente a:
(((2 * 2) + 3) * 3) == 21
Já associatividade é a ordem em que os cálculos sao feitos, dada a mesma precedência, por exemplo:
int a = 1, b = 2, c = 3;
// = tem associatividade da direita pra esquerda
int d = a = b = c = 5;
// na expressao todas variaveis valem 5, porque primeiro c virou 5, depois b virou 5, depois a virou 5 e d.
// se = fosse da esquerda pra direita, os valores seriam d= 1, a=2, b=3 e c=5
Obrigado!