logo

Maior precedência em Java

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.

Maior precedência em Java

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

Maior precedência em Java