operadores java

44
Operadores Java Raphael Marques

Upload: raphael-marques

Post on 06-Jun-2015

14.957 views

Category:

Technology


3 download

DESCRIPTION

Slides apresentado para o grupo de estudos da UFPB para a certificação java (SCJP). São tratados os operadores: compostos, aritméticos, lógicos, relacionais, instanceof, condicional

TRANSCRIPT

Page 1: Operadores Java

Operadores Java

Raphael Marques

Page 2: Operadores Java

Objetivo• Operadores de atribuição:

=, +=, -=, *=, /=• Operadores aritméticos:

+, -, *, /, %, ++, --• Operadores relacionais:

<, <=, >, >=, ==, !=• Operador instanceof• Operadores lógicos:

&, |, ^, !, &&, ||• Operador condicional:

? :

Page 3: Operadores Java

Objetivo

• Não é assunto da prova:– Operadores de deslocamento de bits– Operadores binários (bit-a-bit)– Complemento de 2– Divisão por zero

Page 4: Operadores Java

Operador de atribuição

• Para números, o tamanho importa.int x = 5f; ERRObyte b = 500; ERRO

• Para referências, o “tipo” importa.Integer y = “5”; ERRO

Page 5: Operadores Java

Operador de atribuição

boolean b = false;if(b = true)

System.out.println("SIM");else

System.out.println("NAO");

Qual a saída?

Page 6: Operadores Java

Operador de atribuição

boolean b = false;if(b = true)

System.out.println("SIM");else

System.out.println("NAO");

Qual a saída? → "SIM"

Page 7: Operadores Java

Operador de atribuição

boolean b = false;if(b = true)

→ (b = true) retorna o valor que é atribuído à b que é um booleano

Page 8: Operadores Java

Operador de atribuição

int x = 0;if(x = 1)

System.out.println("SIM");else

System.out.println("NAO");

Qual a saída?

Page 9: Operadores Java

Operador de atribuição

int x = 0;if(x = 1) → ILEGAL

System.out.println("SIM");else

System.out.println("NAO");

Qual a saída?

Page 10: Operadores Java

Operador de atribuição

int x = 0;if(x = 1)

→ (x = 1) retorna o valor que é atribuído á x que é um inteiro, por isso não pode ser colocado como condição de um if

Page 11: Operadores Java

Operadores de atribuição compostos

• x += 5; → x = x + 5;• x -= 5; → x = x - 5;• x *= 5; → x = x * 5;• x /= 5; → x = x / 5;• X %= 5; → NÃO CAI NA PROVA

+= -= *= /=

Page 12: Operadores Java

Operadores de atribuição compostos

• Atualmente a prova não cobra muito precedência de operadores!x = y++ + ++x/z;

• Em alguns casos sim:x *= 2 + 5; → x = x * 2 + 5; ERRADOx *= 2 + 5; → x = x * (2 + 5); CERTO

Page 13: Operadores Java

Operadores relacionais

• Retornam sempre um valor booleano.

• <, <=, >, >=– apenas tipos numéricos

• ==, !=– todos tipos inclusive referência

< <= > >= == !=

Page 14: Operadores Java

Operadores de igualdade

• Comparam números, booleanos e referências

• Os operandos devem ser compatíveis

== !=

Page 15: Operadores Java

Operadores de igualdade

if(false == 'a'){} ILEGAL

if(65 == 'A'){} LEGAL

if(1 == "A"){} ILEGAL

if(1 == new Integer(1)){} LEGAL

Page 16: Operadores Java

Operadores de igualdade

if(65 == 'A'){}

→ um char ('A') é um número e portanto é compativel com int (65)

if(1 == new Integer(1)){}→ O objeto Integer é convertido para int

Page 17: Operadores Java

Operadores de igualdade

JButton a = new JButton("Exit");JButton b = new JButton("Exit");JButton c = a;System.out.println(a == b);System.out.println(a == c);

Qual a saída?

Page 18: Operadores Java

Operadores de igualdade

JButton a = new JButton("Exit");JButton b = new JButton("Exit");JButton c = a;System.out.println(a == b); → falseSystem.out.println(a == c); → true

Qual a saída?

Page 19: Operadores Java

Operadores de igualdade

Integer a = 10;Integer b = 10;

System.out.println(a==b);

Qual a saída?

Page 20: Operadores Java

Operadores de igualdade

Integer a = 10;Integer b = 10;

System.out.println(a==b); → true

Qual a saída?

Page 21: Operadores Java

Operadores de igualdade

Integer a = 10;Integer b = 10;

System.out.println(a==b); → true→ As classes (Integer, Byte, Short, Character e Long) apontam para a mesma referência quanto recebem um valor até 127 por atribuição.

Page 22: Operadores Java

Operadores de igualdade

Integer a = new Integer(10);Integer b = new Integer(10);

System.out.println(a==b); → false

→ Usar new garante a criação de objetos diferentes

Page 23: Operadores Java

Operadores de igualdade

Integer a = new Integer(5) + 5;Integer b = 10;

System.out.println(a==b); → true

→ Em operações que resultam em valores até 127 também são utilizadas as referências constantes

Page 24: Operadores Java

Operadores de igualdade

enum Color {RED,GREEN,BLUE}...Color a = Color.RED;Color b = Color.RED:

System.out.println(a==b);→ true

→ Enums são objetos, mas cada valor de um enum é uma constante (public static final)

Page 25: Operadores Java

Operador instanceof

• Verifica se o OBJETO referenciado pelo lado esquerdo “É UM” objeto do tipo do lado direito.

• Utilizado apenas com referências• Também funciona com interfaces• Retorna um booleano• Ex: referencia instanceof Tipo

Page 26: Operadores Java

Operador instanceof

class Animal { }class Baleia extends Animal { }...Animal a = new Animal();Baleia b = new Baleia();Object c = new Baleia();...System.out.println(a instanceof Animal); → trueSystem.out.println(a instanceof Baleia); →

false

Page 27: Operadores Java

Operador instanceof

class Animal { }class Baleia extends Animal { }...Animal a = new Animal();Baleia b = new Baleia();Object c = new Baleia();...System.out.println(b instanceof Animal); → trueSystem.out.println(b instanceof Baleia); → true

Page 28: Operadores Java

Operador instanceof

class Animal { }class Baleia extends Animal { }...Animal a = new Animal();Baleia b = new Baleia();Object c = new Baleia();...System.out.println(c instanceof Animal); → trueSystem.out.println(c instanceof Baleia); → true

Page 29: Operadores Java

Operador instanceof

class A { }...A a = new A();......println(“x” instanceof A); ILEGAL...println(a instanceof Object); SEMPRE TRUE...println(array instanceof Object); SEMPRE TRUE...println(null instanceof A); SEMPRE FALSE

Page 30: Operadores Java

Operador instanceof

interface Animal { }class Manifero implements Animal { }class Baleia extends Mamifero { }...Baleia b = new Baleia();...println(b instanceof Animal); → true

Page 31: Operadores Java

Operadores aritméticos

• + adição• - subtração• * multiplicação• / divisão• % resto

...println(17 % 5); → 2

...println(17.0 % 5.0); → 2.0

Page 32: Operadores Java

Operadores aritméticos

int a = 8;int b = 6;

int c = a + b;

Page 33: Operadores Java

Operadores aritméticos

short a = 8;short b = 6;

short c = a + b; → ILEGAL

Page 34: Operadores Java

Operadores aritméticos

short c = a + b; → ILEGAL

→ Não existe os operadores aritméticos para tipos menores que int → Os valores são automaticamente convertidos para int, e por isso a expressão não pode ser atribuída a um short

Page 35: Operadores Java

Operadores aritméticos

Solução:

short a = 8;short b = 6;

short c = a;c += b; → LEGAL

Page 36: Operadores Java

Concatenação de Strings5 + 4 + “x” → “9x” ERRO???

5 + (4 + “x”) → “54x”

“x” + 5 + 4 → “x54” ERRO???

“x” + (5 + 4) → “x9”

String s = “alguma”;s += “coisa”; → “algumacoisa”

Page 37: Operadores Java

Incremento e Decremento

int x = 5;...println(x++); → 5...println(x); → 6...println(++x); → 7...println(x); → 7

...println(x--); → 7

...println(x); → 6

Page 38: Operadores Java

Operador condicional

hora < 12 ? "M" : "T"

(hora < 12) ? "M" : "T"

hora < 12 ? "M" : hora < 18 ? "T" : "N“

hora > 12 ? hora < 18 ? "T" : "N" : "M”

Page 39: Operadores Java

Operador condicional

→O aninhamento é feito igual if-else: cada : casa com o ? anterior mais próximo que ainda não possua um :

hora < 12 ? "M" : hora < 18 ? "T" : "N“

hora > 12 ? hora < 18 ? "T" : "N" : "M”

Page 40: Operadores Java

Operadores lógicos

• Operandos são expressões booleanas

• O resultado é um booleano

• Na prova não cai operadores binários!!!

& | ^ ! && ||

Page 41: Operadores Java

Operadores lógicos

• Operadores com curto-circuito– && e ||

• Dependendo do valor do 1º operando, o segundo operando pode não ser avaliadoif( true || ?????? ){}if( false && ??????){}

• Cuidado com incrementos/decrementos no segundo operador.

Page 42: Operadores Java

Operadores lógicos

• Operadores sem curto-circuito– & e |

• Os dois operando sempre serão avaliados

Page 43: Operadores Java

Operadores lógicos

• XOR (OU exclusivo) ^– Retorna true se APENAS um operando é true– Os dois operandos sempre são avaliados

• Negação !true → falsefalse → true

Page 44: Operadores Java

THE END