Quando falamos sobre precedência em Java, o operador vem em primeiro lugar. Existem certas regras definidas em Java para especificar a ordem em que os operadores de uma expressão são avaliados. Operador precedente é um conceito de determinação do grupo de termos em uma expressão. A precedência do operador é responsável por avaliar as expressões. Em Java , parênteses() e Subscrito da matriz[] tem a maior precedência em Java. Por exemplo, Adição e Subtração têm precedência mais alta que os operadores Deslocamento para a esquerda e Deslocamento para a direita.
Abaixo está uma tabela definida na qual o operador de menor precedência é exibido no topo dela.
Precedência | Operador | Tipo | Associatividade |
---|---|---|---|
1) | = += -= *= /= %= | Atribuição Atribuição de adição Atribuição de subtração Atribuição de multiplicação Atribuição de divisão Atribuição de módulo | Direita para esquerda |
2) | ? : | Condicional ternário | Direita para esquerda |
3) | || | OU lógico | Da esquerda para direita |
4) | && | Lógico E | Da esquerda para direita |
5) | | | OU bit a bit inclusivo | Da esquerda para direita |
6) | ^ | OR exclusivo bit a bit | Da esquerda para direita |
7) | & | E bit a bit | Da esquerda para direita |
8) | != == | Relacional não é igual a Relacional é igual a | Da esquerda para direita |
9) | < <= > >= instancia de=> | Relacional menor que Relacional menor ou igual Relacional maior que Relacional maior ou igual Comparação de tipos (somente objetos) | Da esquerda para direita |
10) | >> << >>> | Deslocamento bit a bit para a direita com extensão de sinal Deslocamento bit a bit para a esquerda Deslocamento bit a bit para a direita com extensão zero | Da esquerda para direita |
onze) | - + | Subtração Adição | Da esquerda para direita |
12) | * / % | Multiplicação Divisão Módulo | Da esquerda para direita |
13) | - + ~ ! ( tipo) | Unário menos Unário mais Complemento bit a bit unário Negação lógica unária Typecast unário | Direita para esquerda |
14) | ++ -- | Pós-incremento unário Pós-decremento unário | Direita para esquerda |
quinze) | · () [] | Operador ponto Parênteses Subscrito da matriz | Da esquerda para direita |
Ordem de precedência
Quando dois operadores compartilham um único operando, o operador com maior precedência será o primeiro. Por exemplo, x + y * z é tratado como x + (y * z), enquanto x * y + z é tratado como (x * y) + z porque o operador * tem maior precedência em comparação com o operador +.
quantos MB tem um GB
Associatividade
Associativo é um conceito relacionado aos operadores aplicados quando dois operadores com a mesma precedência aparecem em uma expressão. O conceito de associatividade é muito útil para sair dessa situação. Suponha que temos uma expressão a + b - c Os operadores (+ e - têm a mesma prioridade) , e esta expressão será tratada como (a + (b - c)) porque esses operadores são associativos da direita para a esquerda. Por outro lado, a+++--b+c++ será tratado como ((a++)+((--b)+(c++))) porque os operadores unários de pós-incremento e decremento são associativos da direita para a esquerda.
Um exemplo é definido abaixo para entender como uma expressão é avaliada usando ordem de precedência e associatividade.
Expressão: x = 4/2 + 8 * 4 - ( 5+ 2 )% 3
Solução:
1) Na expressão acima, o operador de maior precedência é () . Então, o parêntese vai primeiro e calcula primeiro.
x = 4/2 + 8 * 4 - 7% 3
2) Agora, /, * e % operadores têm a mesma precedência e a mais alta do + e - Aqui, utilizamos o conceito de associatividade para resolvê-los. A associatividade desses operadores é da esquerda para a direita. Então, / operador vai primeiro e depois * e % simultaneamente.
java switch int
x = 2 + 8 * 4 - 7% 3
x = 2 + 32 - 7% 3
x = 2 + 32 - 1
3) Agora, + e - ambos os operadores também têm a mesma precedência e a associatividade desses operadores é menor para a direita. Então, + operador irá primeiro e depois - Irá.
x = 34 - 1
x = 33
contém método java
MaiorPrecedência.java
//import classes import java.util.*; //creating HighestPrecedence class to evaluate the expression public class HighestPrecedence { //main() method starts public static void main(String[] args) { //initialize variables with default values int x = 2; int y = 5; int z = 12; //calculating exp1, exp2, and exp3 int exp1 = x +(z/x+(z%y)*(z-x)^2); int exp2 = z/x+y*x-(y+x)%z; int exp3 = 4/2+8*4-(5+2)%3; //printing the result System.out.println(exp1); System.out.println(exp2); System.out.println(exp3); } }
Saída