Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo.
Transcript of Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo.
![Page 1: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc142497959413d8df756/html5/thumbnails/1.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc142497959413d8df756/html5/thumbnails/2.jpg)
Operadores em Java
![Page 3: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc142497959413d8df756/html5/thumbnails/3.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc142497959413d8df756/html5/thumbnails/4.jpg)
Operadores em Java
![Page 5: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc142497959413d8df756/html5/thumbnails/5.jpg)
Operadores em Java
![Page 6: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc142497959413d8df756/html5/thumbnails/6.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc142497959413d8df756/html5/thumbnails/7.jpg)
Operadores Aritméticos Unários e Binários
![Page 8: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc142497959413d8df756/html5/thumbnails/8.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc142497959413d8df756/html5/thumbnails/9.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc142497959413d8df756/html5/thumbnails/10.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc142497959413d8df756/html5/thumbnails/11.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc142497959413d8df756/html5/thumbnails/12.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc142497959413d8df756/html5/thumbnails/13.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc142497959413d8df756/html5/thumbnails/14.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc142497959413d8df756/html5/thumbnails/15.jpg)
Operações em Bits
![Page 16: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc142497959413d8df756/html5/thumbnails/16.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc142497959413d8df756/html5/thumbnails/17.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc142497959413d8df756/html5/thumbnails/18.jpg)
Operações em Bits
Ex.:
![Page 19: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc142497959413d8df756/html5/thumbnails/19.jpg)
Operadores de Comparação
![Page 20: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc142497959413d8df756/html5/thumbnails/20.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc142497959413d8df756/html5/thumbnails/21.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc142497959413d8df756/html5/thumbnails/22.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc142497959413d8df756/html5/thumbnails/23.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc142497959413d8df756/html5/thumbnails/24.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc142497959413d8df756/html5/thumbnails/25.jpg)
Operadores Lógicos
![Page 26: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc142497959413d8df756/html5/thumbnails/26.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc142497959413d8df756/html5/thumbnails/27.jpg)
Operadores de Atribuição
![Page 28: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc142497959413d8df756/html5/thumbnails/28.jpg)
Operadores de Atribuição
![Page 29: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc142497959413d8df756/html5/thumbnails/29.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc142497959413d8df756/html5/thumbnails/30.jpg)
O Operador Cast (tipo)
![Page 31: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc142497959413d8df756/html5/thumbnails/31.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc142497959413d8df756/html5/thumbnails/32.jpg)
O Operador Cast (tipo)
![Page 33: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc142497959413d8df756/html5/thumbnails/33.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc142497959413d8df756/html5/thumbnails/34.jpg)
O Operador Ternário ? :
![Page 35: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc142497959413d8df756/html5/thumbnails/35.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc142497959413d8df756/html5/thumbnails/36.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc142497959413d8df756/html5/thumbnails/37.jpg)
Ordem de Precedência e Associatividade em Java
![Page 38: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc142497959413d8df756/html5/thumbnails/38.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc142497959413d8df756/html5/thumbnails/39.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc142497959413d8df756/html5/thumbnails/40.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc142497959413d8df756/html5/thumbnails/41.jpg)
Sumário do Capítulo 3
![Page 42: Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc142497959413d8df756/html5/thumbnails/42.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc142497959413d8df756/html5/thumbnails/43.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc142497959413d8df756/html5/thumbnails/44.jpg)
Declarações e Controle de Acesso
Objetivos: Como varíaveis são iniciadas e declaradas