certificação java operadores e atribuições capítulo 3 cássio melo

44
Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo

Upload: internet

Post on 19-Apr-2015

107 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo

Certificação Java

Operadores e Atribuições

Capítulo 3

Cássio Melo

Page 2: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo

Operadores em Java

Page 3: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo

Operadores em Java

bitsbits

deslocamentodeslocamentoDeslocamento sem extensão de sinal

Deslocamento sem extensão de sinal

OU - exclusivoOU - exclusivo

Inversão de bitsInversão de bits

Não existe && ou || para bits!Não existe && ou || para bits!

Page 4: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo

Operadores em Java

Page 5: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo

Operadores em Java

Page 6: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo

Operadores de Atribuição em Java

Atribuição sobre bitsAtribuição sobre bits

Page 7: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo

Operadores Aritméticos Unários e Binários

Page 8: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo

Operadores Aritméticos Unários

Executam operações em um único operando Incrementam, decrementam ou mudam o sinal Ex.:

Quando usados em byte, char ou short, são primeiro convertidos em int (Numeric Promotion)

O uso de prefix e postfix são diferentes em atribuições

Page 9: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo

Operadores Aritméticos Binários

Executam operações entre um par de operandos

Adição ( + ), subtração( - ), multiplicação( * ), divisão( / ) e módulo ( % )

Casos especiais: Operações entre tipos diferentes Divisão por zero Operações com módulo Operações que lançam exceções Operações que resultam em overflow/underflow

Page 10: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo

Operadores Aritméticos Binários

Operação entre tipos diferentes: Numeric Promotion Regras:

Se um operando é um double, os outros são convertidos em double

Se um operando é um float, os outros são convertidos em float

Se um operando é um long, os outros são convertidos em long

Se qualquer outro tipo, ambos são convertidos em int

Atenção!!!

• Cuidado com o operador aritmético + e o operador de concatenação de Strings +

• Se um dos operandos é um String, os outros são convertidos em String

Ex.: “2.4” + 2.6 resulta em uma String “2.42.6”

• Se o operando é um objeto, o método toString() dele será invocado

Atenção!!!

• Cuidado com o operador aritmético + e o operador de concatenação de Strings +

• Se um dos operandos é um String, os outros são convertidos em String

Ex.: “2.4” + 2.6 resulta em uma String “2.42.6”

• Se o operando é um objeto, o método toString() dele será invocado

Page 11: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo

Operadores Aritméticos Binários Divisão Inteira

Se a divisão é entre ints o resultado é um int, com a parte fracionária truncada

Ex.:

Divisão por zero Entre um int e zero, é lançado um ArithmeticException Entre um double ou float e zero o resultado é

POSITIVE_INFINITY ou NEGATIVE_INFINITY Se o “sinal” de zero for negativo, o sinal do resultado é

invertido - somente em pontos flutuantes

Page 12: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo

Operadores Aritméticos Binários Operações com módulo ( % )

Resto da divisão do primeiro operando com o segundo Diferente de C/C++, Java permite operação de módulo

entre tipos de ponto flutuante Ex.:

Se o primeiro operando é um int e o segundo operando for zero, é lançado um ArithmeticException

Se o primeiro operando é um ponto flutuante e o segundo operando for zero, o resultado é um NaN

Page 13: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo

Operadores Aritméticos Binários

Operações que lançam exceções A única exceção causada durante operações

aritméticas é a ArithmeticException Divisão por zero Resto de um número por Zero

Exceções nunca são lançadas em operações com ponto flutuante

Page 14: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo

Operadores Aritméticos Binários Overflow e Underflow

Ocorre quando o resultado de uma operação é maior (overflow) ou menor (underflow) que o número de bytes permitidos pelo tipo

Java descarta a parte mais significativa dos bits que não cabem no tipo

• Não haverá questões para calcular se um determinado número causará overflow/underflow ou não!

Page 15: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo

Operações em Bits

Page 16: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo

Operações em Bits

Operações Aritméticas: Inversão ( ~ ), E ( & ), OU ( | ), OU-exclusivo (

^ ) Operam bit-a-bit Se os tipos forem diferentes, ocorrerá

Numeric Promotion

Page 17: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo

Operações em Bits

Operações de Deslocamento (Shift): Deslocamento para esquerda ( << ),

deslocamento para a direita aritmético( >> ), deslocamento para a direita lógico ( >>> )

Para tipos diferentes, Numeric promotion A parte deslocada que não couber no tipo é

descartada

Page 18: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo

Operações em Bits

Ex.:

Page 19: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo

Operadores de Comparação

Page 20: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo

Operadores de Comparação

Comparadores Relacionais: Menor-que ( < ), Maior-que ( > ), Menor ou

igual que ( <= ), Maior ou igual que ( >= ) Funcionam como na matemática Qualquer operação relacional com um NaN

resultará em false

Page 21: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo

Operadores de Comparação

Comparadores de Igualdade: Igual ( == ), Diferente ( != ) Funcionam tanto com tipos primitivos quanto

com referências de objetos Mais uma vez, Numeric Promotion

Page 22: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo

Operadores de Comparação

Qual o resultado do código a seguir?

• O operador == Compara referências de objetos!

• Neste caso, s1 = “abcd” e s2 = “abcd”, mas s1 != s2 !!

Page 23: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo

Operador instanceof

Determina se a referência para um objeto (operador da esquerda) é instância de uma classe, interface ou tipo de array especificado pelo operador da direita

Não pode ser usado com tipos primitivos

Page 24: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo

Operador instanceof Qual o resultado do código a seguir?

Page 25: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo

Operadores Lógicos

Page 26: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo

Operadores Lógicos

Operadores booleanos ! (NÃO), & (E), | (OU), ^ (OU-exclusivo)

Operadores “curtos”: && (E), || (OU) Se primeiro operando do || for true, não valida o

segundo operando Se primeiro operando do && for false, não valida o

segundo operando

Page 27: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo

Operadores de Atribuição

Page 28: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo

Operadores de Atribuição

Page 29: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo

Operadores de Atribuição

Qual dos dois códigos gera erro de compilação? Por que?

Corresponde a: b = (byte) (b + 3)Corresponde a: b = (byte) (b + 3)

• O erro está na classe Cast2 !!

• Como há Numeric promotion, precisamos de um cast!

Page 30: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo

O Operador Cast (tipo)

Page 31: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo

O Operador Cast (tipo)

Usado para mudar um tipo numérico pra outro ou mudar a referência de um objeto para um tipo compatível

Widening conversion e Narrowing conversion

Page 32: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo

O Operador Cast (tipo)

Page 33: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo

O Operador Cast (tipo)

O seguinte código pode ser executado?

• Falta Cast (String) !!

• pois elementAt() retorna um Object e s2 é um String!

Page 34: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo

O Operador Ternário ? :

Page 35: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo

O Operador Ternário ? :

Expressa uma sentença condicional (também chamado operador condicional)

Page 36: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo

O Operador Ternário ? :

Analise o código a seguir:

Page 37: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo

Ordem de Precedência e Associatividade em Java

Page 38: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo

Ordem de Precedência e Ordem de Validação em Java

Todos os operadores binários são left-associative, exceto o operador de atribuição ( = )

Os operadores são executados de acordo com a ordem de precedência

Parênteses () são usados para alterar a precedência

Page 39: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo

Ordem de Precedência e Ordem de Validação em Java

Page 40: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo

Ordem de Precedência e Ordem de Validação em Java

Qual o valor de s, no final?

• A resposta é s = “abc9”

• Mas essa questão é muito mais difícil do que qualquer outra desse tipo no teste!

• Então, se você conseguiu entendê-la, você vai conseguir fazer a do teste muito bem!

Page 41: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo

Sumário do Capítulo 3

Page 42: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo

Exercício para Casa!

Resolver todas as questões do capítulo 3, pág. 55

Até a próxima!

Page 43: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo

Certificação Java

Declarações e Controle de AcessoCapítulo 4

Cássio Melo

Page 44: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo

Declarações e Controle de Acesso

Objetivos: Como varíaveis são iniciadas e declaradas