Certificao Java Operadores e Atribuies Captulo 3 Cssio
Certificação Java Operadores e Atribuições Capítulo 3 Cássio Melo
Operadores em Java
Operadores em Java Inversão de bits Não existe && ou || para bits! bits OU - exclusivo Deslocamento sem deslocamento extensão de sinal
Operadores em Java
Operadores em Java
Operadores de Atribuição em Java Atribuição sobre bits
Operadores Aritméticos Unários e Binários
Operadores Aritméticos Unários l l l 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
Operadores Aritméticos Binários l l l Executam operações entre um par de operandos Adição ( + ), subtração( - ), multiplicação( * ), divisão( / ) e módulo ( % ) Casos especiais: l l l 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
Operadores Aritméticos Binários l Atenção!!! Operação entre tipos diferentes: Numeric • Cuidado com o operador aritmético + e o Promotion l operador de concatenação de Strings + Regras: • Se um dos operandos é um String, os outros Se um operando é um double, os outros são convertidos String convertidos emem double l Ex. : l Se “ 2. 4” + 2. 6 resulta em uma Stringsão “ 2. 42. 6” um operando é um float, os outros convertidos em float • Se o operando é um objeto, o método l Se um operando é um long, os outros são convertidos to. String() dele será invocado em long l Se qualquer outro tipo, ambos são convertidos em int
Operadores Aritméticos Binários l Divisão Inteira l l l Se a divisão é entre ints o resultado é um int, com a parte fracionária truncada Ex. : Divisão por zero l l l Entre um int e zero, é lançado um Arithmetic. Exception 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
Operadores Aritméticos Binários l Operações com módulo ( % ) l l l 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 Arithmetic. Exception Se o primeiro operando é um ponto flutuante e o segundo operando for zero, o resultado é um Na. N
Operadores Aritméticos Binários l Operações que lançam exceções l A única exceção causada durante operações aritméticas é a Arithmetic. Exception l l l Divisão por zero Resto de um número por Zero Exceções nunca são lançadas em operações com ponto flutuante
Operadores Aritméticos Binários l Overflow e Underflow l l Ocorre quando o resultado de uma operação é maior (overflow) ou menor (underflow) que o número de bytes permitidos pelo tipo questões para calcular • Não haverá Java descarta a parte mais significativa dos bits que não se um determinado número causará cabem overflow/underflow no tipo ou não!
Operações em Bits
Operações em Bits l l Operações Aritméticas: Inversão ( ~ ), E ( & ), OU ( | ), OU-exclusivo ( ^) Operam bit-a-bit Se os tipos forem diferentes, ocorrerá Numeric Promotion
Operações em Bits l l 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
Operações em Bits l Ex. :
Operadores de Comparação
Operadores de Comparação l l 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 Na. N resultará em false
Operadores de Comparação l l Comparadores de Igualdade: Igual ( == ), Diferente ( != ) Funcionam tanto com tipos primitivos quanto com referências de objetos Mais uma vez, Numeric Promotion
• O operador == Compara de objetos! Operadores dereferências Comparação • Neste caso, s 1 = “abcd” e s 2 = “abcd”, mas s 1 != s 2 !! l Qual o resultado do código a seguir?
Operador instanceof l l 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
Operador instanceof l Qual o resultado do código a seguir?
Operadores Lógicos
Operadores Lógicos l l Operadores booleanos ! (NÃO), & (E), | (OU), ^ (OU-exclusivo) Operadores “curtos”: && (E), || (OU) l l Se primeiro operando do || for true, não valida o segundo operando Se primeiro operando do && for false, não valida o segundo operando
Operadores de Atribuição
Operadores de Atribuição
Operadores de Atribuição l Qual dos dois códigos gera erro de compilação? Por que? • O erro está na classe Cast 2 !! Corresponde b = (byte) (b + 3) • Como háa: Numeric promotion, precisamos de um cast!
O Operador Cast (tipo)
O Operador Cast (tipo) l l 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
O Operador Cast (tipo)
O Operador Cast (tipo) l O seguinte código pode ser executado? • Falta Cast (String) !! • pois element. At() retorna um Object e s 2 é um String!
O Operador Ternário ? :
O Operador Ternário ? : l Expressa uma sentença condicional (também chamado operador condicional)
O Operador Ternário ? : l Analise o código a seguir:
Ordem de Precedência e Associatividade em Java
Ordem de Precedência e Ordem de Validação em Java l l Todos os operadores binários são leftassociative, exceto o operador de atribuição (=) Os operadores são executados de acordo com a ordem de precedência l Parênteses () são usados para alterar a precedência
Ordem de Precedência e Ordem de Validação em Java
Ordem de Precedência e Ordem de Validação em Java l Qual o valor de s, no final? • A resposta é s = “abc 9” • 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!
Sumário do Capítulo 3
Exercício para Casa! l Resolver todas as questões do capítulo 3, pág. 55 Até a próxima!
Certificação Java Declarações e Controle de Acesso Capítulo 4 Cássio Melo
Declarações e Controle de Acesso l Objetivos: l Como varíaveis são iniciadas e declaradas
- Slides: 44