Java Operadores Prioridade de Operadores Pré/Pos Incremento/Decremento

Java Operadores Prioridade de Operadores Pré/Pos Incremento/Decremento. Linguagem Java.
Quais são os Operadores em java?
Source: http://java.sun.com/docs/books/tutorial/java/nutsandbolts/opsummary.html

Simple Assignment Operator

= Simple assignment operator

Arithmetic Operators

+ Additive operator (also used for String concatenation)
– Subtraction operator
* Multiplication operator
/ Division operator
% Remainder operator

Unary Operators

+ Unary plus operator; indicates positive value (numbers are positive without this, however)
– Unary minus operator; negates an expression
++ Increment operator; increments a value by 1
– Decrement operator; decrements a value by 1
! Logical compliment operator; inverts the value of a boolean

Equality and Relational Operators

== Equal to
!= Not equal to
> Greater than
>= Greater than or equal to
Conditional Operators

Condition Operators

&& Conditional-AND
|| Conditional-OR
?: Ternary (shorthand for if-then-else statement)

Type Comparison Operator

instanceof Compares an object to a specified type

Bitwise and Bit Shift Operators

~ Unary bitwise complement
> Signed right shift
>>> Unsigned right shift
& Bitwise AND
^ Bitwise exclusive OR
| Bitwise inclusive OR

Precedência de Operadores em java:
Source: http://www.uni-bonn.de/~manfear/javaoperators.php

Prioridade

Operador

Operação


1

[ ]

array index

( )

method call

.

member access – 1


2

++

pre- or postfix increment

pre- or postfix decrement

+ –

unary plus, minus

~

bitwise NOT

!

boolean (logical) NOT

(type)

type cast

new

object creation – 2

3

* / %

multiplication, division, remainder

4

+ –

addition, substraction

+

string concatenation -4


5

signed bit shift left

>>

signed bit shift right

>>>

unsigned bit shift right – 5

6

less than, less than or equal to

> >=

greater than, greater than or equal to

instanceof

reference test – 6

7

==

equal to

!=

not equal to

8

&

bitwise AND

&

boolean (logical) AND

9

^

bitwise XOR

^

boolean (logical) XOR

10

|

bitwise OR

|

boolean (logical) OR

11

&&

boolean (logical) AND

12

||

boolean (logical) OR

13

? :

conditional – 13


14

=

assignment

*= /= += -= %=


>= >>>=


&= ^= |=

combinated assignment


(operation and assignment)

Oque tudo isso significa?

Java Operadores Prioridade de Operadores Pré/Pos Incremento/Decremento

Que a precedência de Operadores é IMPORTANTE, pois dependendo muda o resultado.

int c = 25 – 5 * 4 / 2 – 10 + 4; c aqui recebe 34

int c = 25 – ((5 * 4) /2)) – 10 + 4; c aqui recebe 9

Quero abrir um espaço para falando Somente sobre o Operador de Incremento e Decremento(++ e –):
– Quando estão sozinhos, eles são a mesma coisa que acrescentar 1 Porem:

Pré Incremento: Incrementa quando aparece o operador
Pós Incremento: Incrementa somente na Instrução de baixo

Pré Decremento: Decrementa quando aparece o operador
Pós Decremento: Decrementa somente na Instrução de baixo

Exemplo:

int b = 2;
++b; // Pré Incremento , b = 3

int b = 2;
b++; //Pos Incremento, b = 2
int a = b; //Aqui o b vale 3

Mesma coisa com Decremento.

AGORA QUANDO ELE são usados com algum Operador, a coisa muda.

int b = 2;
int c = ++b;// b = 3, c = 3.

int b = 2;
int c = b++;// c = 2, b =3(Somente na proxima Instrução)
Proxima Instrução

Explicando oque aconteceu:

Em:

int b = 2;
int c = ++b;

Temos em bytecode:

0: iconst_2
1: istore_1
2: iinc 1, 1
5: iload_1
6: istore_2
*As explicações estão no tutorial: Básico sobre bytecodes

Suponto que estamos usando o método main, veremos oque ocorre no Frame, Lembre-se que o index 0 da local variable é uma Referência a Constant Pool

0: iconst_2:
Exemplos Java,Linguagem Java, Programação, Java
Clique na imagem para ampliar

1: istore_1

Exemplos Java,Linguagem Java, Programação, Java
Clique na imagem para ampliar

2: iinc 1, 1

Exemplos Java,Linguagem Java, Programação, Java
Clique na imagem para ampliar

5: iload_1

Exemplos Java,Linguagem Java, Programação, Java
Clique na imagem para ampliar

6: istore_2

Exemplos Java,Linguagem Java, Programação, Java
Clique na imagem para ampliar

Sendo b index 1 da Local Variable, c index 2 da Local Variable, temos b e c com o valor de 3.

Veremos o próximo:

int b = 2;
int c = b++;

Temos em Bytecode:

0: iconst_2
1: istore_1
2: iload_1
3: iinc 1, 1
6: istore_2
0: iconst_2:
Exemplos Java,Linguagem Java, Programação, Java

1: istore_1

Exemplos Java,Linguagem Java, Programação, Java

2: iload_1
Exemplos Java,Linguagem Java, Programação, Java

3: iinc 1, 1

Exemplos Java,Linguagem Java, Programação, Java

6: istore_2

Exemplos Java,Linguagem Java, Programação, Java

Sendo b index 1 da Local Variable, c index 2 da Local Variable, temos b = 3 e c com o valor de 2.

E se tivermos mais de um operador Unário?

int b = 3;
int c = b++ + 1;

Vamos em ordem de Precedência de Operadores:
1 – Primeiro Operador de Pos Incremento:
c = 3 + 1 = 4;
b = 4;

Outro Exemplo:

int b = 2;
int c = b++ + ++b;
Vamos em ordem de Precedência de Operadores:

1 – Primeiro Operador de Pos Incremento:
int c = 2 + ++b; -> Aqui quando ele carrega o b, ele ja tem o valor de 3
pois ja é a próxima instrução
b = 3;(na Próxima instrução)

2 – Primeiro Operador de Pos Incremento:
int c = 2 + 4 = 6
b = 4;

Em bytecode Temos: Sendo b index 1, c index 2 da Local Variable

Code:
0: iconst_2
1: istore_1
2: iload_1
3: iinc 1, 1
6: iinc 1, 1
9: iload_1
10: iadd
11: istore_2

0: iconst_2

Exemplos Java,Linguagem Java, Programação, Java

1: istore_1

Exemplos Java,Linguagem Java, Programação, Java
2: iload_1

Exemplos Java,Linguagem Java, Programação, Java

3: iinc 1, 1

Exemplos Java,Linguagem Java, Programação, Java

6: iinc 1, 1
Exemplos Java,Linguagem Java, Programação, Java

9: iload_1
Exemplos Java,Linguagem Java, Programação, Java

10: iadd
Exemplos Java,Linguagem Java, Programação, Java

11: istore_2
Exemplos Java,Linguagem Java, Programação, Java

Curiosidade:
O Operador % remain é chamado MOD.

Exemplo:
2 % 2 = 0 pois a conta é exata
3 % 2 = 1 pois para a conta dar certa so posso ir ate o 2
1 % 2 = 1 quando é menor é sempre ele mesmo


Bom basicamente era essa a intenção, Próximo Post, cast,Promoção em tipos primitivos.
Cya DUDES!