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





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



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
Operadores Aritméticos
Binários

Atenção!!!
Operação entre tipos diferentes: Numeric
• Cuidado com o operador aritmético + e o
Promotion

operador de concatenação de Strings +
Regras:
• Se
operandos
é um String,
os outros
Se um
um dos
operando
é um double,
os outros
são
são
convertidos
String
convertidos
emem
double

Ex.:

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
 Se um operando é um long, os outros são convertidos
toString() dele será invocado
em long
 Se qualquer outro tipo, ambos são convertidos em int
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
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
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
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 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




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




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

Ex.:
Operadores de Comparação
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
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
• O operador == Compara
de objetos!
Operadores
dereferências
Comparação
• Neste caso, s1 = “abcd” e s2 = “abcd”, mas s1 != s2 !!

Qual o resultado do código a seguir?
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
Operador instanceof

Qual o resultado do código a seguir?
Operadores Lógicos
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
Operadores de Atribuição
Operadores de Atribuição
Operadores de Atribuição

Qual dos dois códigos gera erro de compilação?
Por que?
• O erro está na classe Cast2 !!
Corresponde
b = (byte)
(b + 3)
• Como háa:
Numeric
promotion,
precisamos de um cast!
O Operador Cast (tipo)
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
O Operador Cast (tipo)
O Operador Cast (tipo)

O seguinte código pode ser executado?
• Falta Cast (String) !!
• pois elementAt() retorna um Object e
s2 é um String!
O Operador Ternário ? :
O Operador Ternário ? :

Expressa uma sentença condicional (também
chamado operador condicional)
O Operador Ternário ? :

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


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

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

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!
Sumário do Capítulo 3
Exercício para Casa!

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

Objetivos:

Como varíaveis são iniciadas e declaradas
Download

Certificação Java