Você está na página 1de 35

Ricardo Ap.

Perez de Almeida
 Operadores de Atribuição
 Operadores de Atribuição Compostos
 Operadores de Comparação
 Operadores de Igualdade
 O operador de comparação instanceof
 Operadores Aritméticos
 Operadores de Incremento e Decremento
 Operador Ternário
 Operadores Lógicos
 Exercícios de Fixação
 Exercícios Práticos
2
 Operadores em Java produzem novos valores a
partir de um ou mais operandos.
 O resultado da maioria das operações é um valor
booleano ou numérico.
 Java não permite aos programadores
sobrecarregarem operadores como em C++
 Contudo, alguns operadores já vem
sobrecarregados:
- O operador + pode ser usado para adicionar um
primitivo numérico a outro ou para concatenar
strings a outra string.
- Os operadores &, | e ^ podem ser usados em
comparações ou para operações com bits
3
 O principal operador de atribuição utilizado é o =
 O operador = é usado para:

- Atribuir um valor a um primitivo (cuidado com


casts implícitos, explícitos e com o truncamento
de valores)
- Atribuir um objeto a uma variável de referência
(cuidado com os tipos das variáveis e os objetos
atribuídos a elas)

4
 Os operadores de atribuição compostos visam
reduzir o tamanho de expressões de atribuição
 Existem cerca de 11 operadores de atribuição
compostos em Java, mas apenas 4 deles são os
mais usados.
 Os 4 operadores de atribuição compostos mais
utilizados são: +=, -=, *= e /=

5
Expressão Original Expressão Equivalente
y = y – 6; y -= 6;
z = z + 2; z += 2;
x = x * 2 * 5; x *= 2*5;
h = h / 5; h /= 5;

 Cuidado com a precedência de operadores!


 Qual será o valor de x?
int x = 2;
x *= 2 + 5;

6
 Os principais operadores de comparação
existentes são:
== (igualdade)
!= (diferença)
< (menor)
> (maior)
<= (menor ou igual a)
>= (maior ou igual a)
7
 Os operadores <, <=, > e >= podem ser utilizados
para comparar qualquer combinação de inteiros,
números de ponto flutuante ou caracteres.

8
 Java tem dois operadores de igualdade: == e !=
 Cada comparação com esses operadores pode
envolver dois números (incluindo o tipo char com
sua representação em Unicode), dois valores
booleanos ou duas variáveis de referência a objeto.
 Não é possível comparar tipos incompatíveis, ou
seja, não se pode comparar char com boolean, String
com array, etc.
 Há 4 tipos que podem ser testados com operadores
de igualdade: números, caracteres, tipos booleano
primitivos e variáveis de referência a objetos
9
 O que os operadores de igualdade == e !=
comparam de fato?
 A comparação de tipos primitivos compara o
que?
 A comparação de variáveis de referência
compara o que?

10
 Quais serão as saídas no código a seguir?

 Cuidado! Quais serão as saídas nos códigos a seguir?

11
 Quais serão as saídas no código a seguir?

12
 O operador instanceof é usado somente com
variáveis de referência de objeto e pode ser
empregado para verificar se um objeto é de um tipo
(interface ou classe) específico.
 O operador instanceof está intimamente ligado há
herança, já que pode ser usado para identificar os
“tipos” de um objeto em uma hierarquia
 Qual a saída no código a seguir?

13
 Quais as saídas nos códigos a seguir?

14
 instanceof também pode ser utilizado com null

 Cuidado ao usar instanceof! Qual será a saída do


código a seguir?

15
 Os operadores aritméticos básicos de Java são: +
(soma), - (subtração), * (multiplicação) e /
(divisão).
Ex: int z = 1 + 5;
Ex: int y = x -4;
Ex: int x = 5*4;
Ex: int w = 4/3;
 Há ainda o operador módulo %, que retorna o
resto de uma divisão

16
 É importante ficar atento:
- As expressões são avaliadas da esquerda para a
direita, por padrão.
- É possível modificar a ordem de avaliação das
expressões colocando algumas delas entre
parênteses.
- Operadores * e / possuem maior precedência
em relação aos operadores + e –

17
 O operador + também pode ser usado para a
concatenação de strings.
Ex: String a = “Elefante” + “ branco”;
 A concatenação de strings também pode ser feita em
conjunto com números.

 Qual a saída do exemplo a seguir?

18
 Regra: Se um dos operandos for do tipo String, o
operador + atuará como concatenador de String.
Se ambos os operandos forem números, o
operador + fará a soma deles
 É possível usar o operador de atribuição
composto += para concatenar strings.

19
 A linguagem Java possui operadores de incremento
(++) e decremento (--).
 O operador de incremento soma uma unidade a uma
variável numérica ou caractere.
 O operador de decremento subtrai uma unidade de
uma variável numérica ou caractere.
 Os operadores podem ser usados como operadores
de pré-incremento e pré-decremento (operam sobre
a variável e depois retornam o valor) ou de pós-
incremento e pós-decremento (retornam o valor da
variável e depois operam sobre ela).
20
 Operadores de pré-incremento e pré-
decremento:
Ex: int x = 1; int y = ++x; //pré-incremento
Ex: int x = 2; int y = --x; //pré-decremento
 Operadores de pós-incremento e pós-
decremento:
Ex: int x = 1; int y = x++; //pós-incremento
Ex: int x = 2; int y = x--; //pós-decremento
 Qual a diferença entre os conjuntos de exemplos
mostrados?
21
 Quais serão as saídas no código a seguir?

22
 O operador ternário é utilizado para avaliar
expressões booleanas de modo semelhante à
instrução if, exceto por, em vez de executar um
bloco de código se o resultado do teste for true,
atribuir um valor à variável.
 A estrutura geral do operador ternário é:

Ex: x = (expressão booleana) ? valor a atribuir se


true : valor a atribuir se false

23
 Quais serão as saídas no código a seguir?

24
 Em Java existem basicamente 6 operadores
lógicos: &&, | |, &, |, ! e ^
 Os operadores && (and) e | | (or) são usados para
juntar pequenas expressão booleanas a fim de
formar expressões booleanas maiores. Eles
somente podem ser usados para avaliar valores
booleanos.
 Uma expressão com && será verdadeira se
ambos os operandos forem verdadeiros
Ex: if((2 < 3) && (3 < 4) ) { //algum código }
25
 Uma expressão com | | será verdadeira se pelo
menos 1 dos operandos for verdadeiro
Ex: if((2 < 3) | | (5 < 4)) { //algum código }
 Tanto o operador && como o operador | |
trabalham em um esquema de avaliação curto-
circuito. No caso do operador &&, se uma das
expressões avaliadas já for falsa, as outras
expressões não são avaliadas. No caso do
operador | |, se uma das expressões avaliadas já
for verdadeira, as outras expressões não são
avaliadas. 26
 Os operadores & e | funcionam da mesma forma
que os operadores && e | | mas não realizam
avaliação em curto-circuito, ou seja, esses
operadores avaliam todas as expressões para
depois resultarem em true ou false.
 O operadores ^ (ou exclusivo) também avalia
todos os operandos antes de resultar em true ou
false. Quando ele é aplicado, somente produz
true se o número de expressões booleanas
verdadeiras for ímpar. Do contrário, produz false.
27
 Quais serão as saídas do código a seguir?

 O operador ! (negação) retorna o oposto do valor


atual de uma expressão booleana
 Quais as saídas do código a seguir?

28
29
 Dado o código a seguir:
public class Hexy {
public static void main (String [] args) {
Integer i = 42;
String s = (i < 40) ? “life” : (i > 50) ? “universe” : “everything”;
System.out.println(s);
}}

 Qual é o resultado?
a) null
b) life
c) universe
d) everything
e) A compilação falha
f) É lançada uma exceção em tempo de execução
30
 Dado o código a seguir:
public class Twisty {
{ index = 1; }
int index;
public static void main(String [] args) {
new Twisty().go();
}
void go() {
int [] [] dd = {{9,8,7},{6,5,4},{3,2,1,0}};
System.out.println(dd[index++][index++]);
}}

 Qual é o resultado?
a) 1 e) 9
b) 0 f) A compilação falha
g) É lançada uma exceção em
c) 4
tempo de execução
d) 6 31
 Dado o código a seguir:
public class Spock {
public static void main(String [] args)
{
int mask = 0;
int count = 0;
if(((5<7) || (++count < 10) ) | mask++ < 10)
mask = mask + 1;
if( (6 > 8) ^ false)
mask = mask + 10;
if(! (mask > 1) && ++count > 1)
mask = mask + 100;
System.out.println(mask + “ “ + count);
}}

 Qual a resposta correta?


a) mask = 0 e count = 0 d) mask = 2 e count = 0
b) mask = 1 e count = 1 e) mask > 100 e count > 0
c) mask = 1 e count = 0 f) mask > 1 e count > 0
32
33
 Crie um projeto no Netbeans denominado Calculadora
 Desenvolva uma aplicação que consista em uma
calculadora capaz de fazer cálculos com as 4 operações
básicas (soma, subtração, multiplicação e divisão)
 Solicite ao usuário um operando (um valor inteir0), um
operador (+, -, * ou / ), outro operando e em seguida
realize o cálculo e exiba o resultado na tela.
 Após a exibição do resultado, a aplicação deve voltar a
solicitar ao usuário novos operandos e operadores
(loop).
34
 Crie um projeto no Netbeans denominado Comparador
 Desenvolva uma aplicação que consista em um
comparador de valores.
 Solicite ao usuário um operando (um valor inteir0), um
operador de comparação (<, >, <= ou >=), outro
operando e em seguida exiba o resultado da
comparação na tela.
 Após a exibição do resultado, a aplicação deve voltar a
solicitar ao usuário novos operandos e operadores de
comparação (loop).
35

Você também pode gostar