Você está na página 1de 142

Universo

Java
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

Galxia
JSE
Java Standard
Edition
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

Constelao
Bsico da
linguagem Java
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

Tpicos

Parte I Introduo ao Java

Parte II Variveis

Parte III Tipos primitivos e valores literais

Parte IV Operadores

Parte V Expresses, declaraes, blocos e controle de fluxos

Parte VI Arrays

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

Tpicos

Parte I Introduo ao Java

Parte II Variveis

Parte III Tipos primitivos e valores literais

Parte IV Operadores

Parte V Expresses, declaraes, blocos e controle de fluxos

Parte VI Arrays

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

Parte IV
Operadores
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

Tpicos

Desafios

Introduo

Operadores aritmticos

Diviso e mdulo

Hora de praticar

Operadores unrios

Hora de praticar

Questes de concursos

Operadores de igualdade e relacionais

instanceof
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

Tpicos

Hora de praticar

Questes de concursos

Operadores condicionais

Hora de praticar

Questes de concursos

Operadores de bits

Hora de praticar

Questes de concursos

Operadores de atribuio

Hora de praticar
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

Tpicos

Questes de concursos

Precedncia de operadores

Questes de concursos

Respostas dos desafios

Referncias

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

Desafios

[RGA] O que so operadores?

[RGA] Quais so os operadores aritmticos?

[RGA] Alm da operao aritmtica de adio, qual a outra


funo do operador +?
[RGA] Nas declaraes double x = 19 / 3; e double y = 19.0 /
3;, as variveis recebero o mesmo valor. [CERTO/ERRADO]
[RGA] O que pode surgir na diviso de inteiros? E na diviso
de pontos flutuantes?

[RGA] Qual a diferena entre o operador / e o %?

[RGA] Quais so os operadores unrios?

[RGA] Qual a diferena entre usarmos ++x (ou --x) e x++ (ou
x--)?
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

10

Desafios

[RGA] Quais so os operadores de igualdade e relacionais?


[RGA] A seguinte declarao de varivel int x == 15; est
correta. [CERTO/ERRADO]
[RGA] Qual o resultado das operaes realizadas com os
operadores de igualdade e relacionais?

[RGA] O que o operador instanceof?

[RGA] Quais so os operadores condicionais?

[RGA] Qual o resultado das operaes realizadas com os


operadores && e ||?
[RGA] Como os operadores && e || so chamados? Por qu?
[RGA] O valor da varivel x na declarao String x = (true ?
Sim : No); Sim. [CERTO/ERRADO]
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

11

Desafios

[RGA] Quais so os operadores de bits?

[RGA] Qual a diferena entre o operador >> e o >>>?

[RGA] Qual a diferena entre operadores condicionais (&& e ||)


e os de bits (&, | e ^)?
[RGA] Quais so os operadores de atribuio?
[RGA] O seguinte cdigo est correto: if (x = 15) {...}.
[CERTO/ERRADO]

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

12

Introduo

Operadores so smbolos especiais que:

Realizam operaes especficas em um ou mais operandos

Retornam um resultado

int x = 3 + 6;

Operandos: x, 3 e 6

Operadores:

= (atribuio simples)

+ (adio)

Resultados:

Da adio: 9

Da atribuio: x recebe 9

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

13

Introduo
Operandos
Operandos

Operadores
Operadores

Resultado
Resultado da
da adio
adio

Resultado
Resultado da
da atribuio
atribuio simples
simples
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

14

Operadores aritmticos

Operadores:

Adio +

Subtrao -

Multiplicao *

Diviso /

Mdulo ou resto da diviso %

Adio +

Funo 1: adio entre tipos numricos

int x = 3 + 6;

Funo 2: concatenao de String

String y = Kal-El + Gildo Arajo + x; // y ter valor de Kal-El


Gildo Araujo9.
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

15

Operadores aritmticos
Tipo

Operando 1

Operando 2

byte

byte

byte

short

short

short

int

int

int

Pelo menos um deles for do tipo long e o


outro for do tipo long ou de um tipo
menos preciso

long

Pelo menos um deles for do tipo float e o


outro for do tipo float ou de um tipo
menos preciso

float
double

Pelo menos um deles for do tipo double e


o outro for do tipo double ou de um tipo
menos preciso

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

Tipo do resultado
da operao

int

long
float
double
16

Operadores aritmticos

Exemplo 1:

byte j = 15;

byte l = 20;

byte m = (byte) (j + l);

Exemplo 2:

int n = 15;

long o = 20;

int p = (int) (n - o);

Exemplo 3:

float q = 15.5f;

double r = 20.7;

float s = (float) (q * r);


rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

17

Operadores aritmticos

Exemplo 4

double x = 19 / 3; // x recebe 6.0.

Ambos os operandos so do grupo BSIL

x do tipo double

Ento o resultado do tipo int 6


Ento haver a converso automtica de 6 em double (6.0)

double y = 19.0 / 3; // y recebe 6.333333333333333.

O primeiro operando do tipo double

Ento o resultado do tipo double

6.333333333333333

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

18

Operadores aritmticos

Diviso /

Diviso de nmeros inteiros

Caso os operandos sejam dos tipos BSIL

Quando o divisor for 0:

int x = 15 / 2; // x recebe 7.
Leva-se a uma exceo ArithmeticException

Diviso de nmeros de ponto flutuante:

Caso um dos operandos seja dos tipos FD

double y= 15 / 2.0; // y recebe 7.5.

Quando da diviso de (sendo um deles dos tipos FD):

Nmero positivo por 0, produz resultado infinito positivo

Nmero negativo por 0, produz resultado infinito negativo


0 por 0, produz NaN (not a number)

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

19

Diviso e mdulo

%
%

//

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

20

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

21

Hora de praticar

constelacao01.parte04

Exemplo01_OperadoresAritmeticos

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

22

Operadores unrios

Operadores:

Mais +

Indica valor positivo

No necessrio us-los em nmeros positivos

Menos

Incremento ++

Incrementa um valor em um

Decremento

Nega uma expresso ou um nmero

Diminui um valor em um

Complemento lgico !

Inverte o valor de um boolean


rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

23

Operadores unrios

Os operadores de incremento e decremento podem ser:

Pr-fixados

avaliado o valor incrementado (decrementado)

Exemplo:

O valor trabalhado j o incrementado (decrementado)


int x = 15;

System.out.println(x: + ++x); // O resultado gerado x: 16.

Ps-fixados

avaliado o valor original

O valor trabalhado o valor original

Depois ele incrementado (decrementado)

Exemplo:

int x = 15;

System.out.println(x: + x++); // O resultado gerado x: 15.


System.out.println(x: + x); // O resultado gerado x: 16.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

24

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

25

Hora de praticar

constelacao01.parte04

Exemplo02_OperadoresUnarios

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

26

Questes de concursos
[IADES 2011 PG/DF - Analista Jurdico - Analista de Sistemas]
Analise o cdigo fonte em Java a seguir e assinale a alternativa
que apresenta o resultado da execuo do programa.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

27

Questes de concursos
[IADES 2011 PG/DF - Analista Jurdico - Analista de Sistemas]
Analise o cdigo fonte em Java a seguir e assinale a alternativa
que apresenta o resultado da execuo do programa.

import java.io.*;

public class Calculadora {

public static void main(String [] args) {

int a, b, c;

a = 5;

b = 3;

c = a++ + ++b; // a = 6, b = 4 e c = 9.

System.out.println(Valores = + a + b + c); // Imprime Valores =


649.

}
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

28

Questes de concursos
[IADES 2011 PG/DF - Analista Jurdico - Analista de Sistemas]
Analise o cdigo fonte em Java a seguir e assinale a alternativa
que apresenta o resultado da execuo do programa.

[A] Valores = 16

[B] Valores = 548

[C] Valores = 18

[D] Valores = 649

[E] Valores = 19

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

29

Questes de concursos
[IADES 2011 PG/DF - Analista Jurdico - Analista de Sistemas]
Analise o cdigo fonte em Java a seguir e assinale a alternativa
que apresenta o resultado da execuo do programa.

[A] Valores = 16

[B] Valores = 548

[C] Valores = 18

[D] Valores = 649

a++: avalia-se o valor original de a, depois incrementa a

++b: avalia-se o valor incrementado de b

Valores = + a + b + c: houve concatenao de String

[E] Valores = 19
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

30

Questes de concursos
[FGV - 2010 - BADESC - Analista de Sistemas - Desenvolvimento
de Sistemas Questo 35] Observe o cdigo em Java a seguir,
em que se pode verificar a aplicao dos operadores de prdecremento e ps-decremento.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

31

Questes de concursos
[FGV - 2010 - BADESC - Analista de Sistemas - Desenvolvimento
de Sistemas Questo 35] Observe o cdigo em Java a seguir,
em que se pode verificar a aplicao dos operadores de prdecremento e ps-decremento.

public class Decrementa {

public static void main(String[] args) {

int m, n = 44; // m no foi inicializada e n = 44;

m = --n; // m = 43 e n = 43.

m = n--; // m = 43 e n = 42.

System.out.println(m); // Imprime 43.

System.out.println(n); // Imprime 42.

}
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

32

Questes de concursos
[FGV - 2010 - BADESC - Analista de Sistemas - Desenvolvimento
de Sistemas Questo 35] Aps a execuo do cdigo, as
variveis m e n exibiro, respectivamente, os valores:

[A] 42 e 41.

[B] 42 e 42.

[C] 42 e 43.

[D] 43 e 42.

[E] 43 e 43.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

33

Questes de concursos
[FGV - 2010 - BADESC - Analista de Sistemas - Desenvolvimento
de Sistemas Questo 35] Aps a execuo do cdigo, as
variveis m e n exibiro, respectivamente, os valores:

[A] 42 e 41.

[B] 42 e 42.

[C] 42 e 43.

[D] 43 e 42.

[E] 43 e 43.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

34

Questes de concursos
[CESPE 2011 EBC Cargo 12] A respeito de estruturas de controle
de fluxo em algoritmos, julgue o prximo item.

[101] Na linguagem Java, a expresso contador contador +


1 representada, usando-se o operador de incremento ++,
por contador ++.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

35

Questes de concursos
[CESPE 2011 EBC Cargo 12] A respeito de estruturas de controle
de fluxo em algoritmos, julgue o prximo item.

[101] Na linguagem Java, a expresso contador = contador


+ 1 representada, usando-se o operador de incremento +
+, por contador ++.

Gabarito: ERRADO.

Justificativa da mudana de gabarito:

A representao proposta para a expresso tratada no item est


equivocada, razo suficiente para a alterao do gabarito.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

36

Operadores de igualdade e relacionais

Operadores:

Igual a ==

Possui funo diferente do operador de atribuio simples =

Diferente de !=

Maior que >

Menor que <

Maior que ou igual a >=

Menor que ou igual a <=

instanceof

O tipo do resultado das operaes realizadas com esses


operadores boolean

boolean x = 1 < 2; // x recebe true porque 1 menor que 2.


rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

37

Operadores de igualdade e relacionais

instanceof

chamado de operador de comparao de tipo

Testa se um objeto instncia de:

Uma classe

Uma subclasse

Uma classe que implementa uma interface particular

objeto instanceof Classe

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

38

instanceof
veiculo
veiculo

Veiculo
Veiculo

Carro
Carro

Acelerar
Acelerar

carro
carro
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

39

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

40

Hora de praticar

constelacao01.parte04

Exemplo03_OperadoresIgualdadeRelacionais

constalacao01.parte04.classes

Carro

Veiculo

constalacao01.parte04.interface

Acelerar

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

41

Questes de concursos
[ESAF 2008 CGU - Analista de Desenvolvimento de Sistemas
Questo 23] Com relao linguagem de programao Java,
correto afirmar que

[A] o operador instanceof utilizado para chamar o mtodo


construtor de uma classe e criar um novo objeto.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

42

Questes de concursos
[ESAF 2008 CGU - Analista de Desenvolvimento de Sistemas
Questo 23] Com relao linguagem de programao Java,
correto afirmar que

[A] o operador instanceof new utilizado para chamar o


mtodo construtor de uma classe e criar um novo objeto.

Gabarito: ERRADO.

Veiculo veiculo = new Veiculo();

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

43

Questes de concursos
[CESPE 2012 BASA Cargo 17] Julgue o item seguinte, acerca da
linguagem de programao Java.

[99] O operador instanceof s pode ser usado para testar


valores null.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

44

Questes de concursos
[CESPE 2012 BASA Cargo 17] Julgue o item seguinte, acerca da
linguagem de programao Java.

[99] O operador instanceof s pode ser usado para testar


valores null.

Gabarito: ERRADO.

instanceof

chamado de operador de comparao de tipo

Testa se um objeto instncia de:

Uma classe

Uma subclasse

Uma classe que implementa uma interface particular

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

45

Operadores condicionais

Operadores:

AND lgico &&

OR lgico ||

expresso1 && expresso2


expresso1 || expresso2

Ternrio ? :

condio ? expresso1 : expresso2

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

46

Operadores condicionais

Operadores AND lgico && e OR lgico II

O tipo do resultado das operaes realizadas com esses


operadores boolean

boolean x = (3 > 2) && (4 < 5); // x recebe true porque 3 maior


que 2 E 4 menor que 5.

So chamados operadores de curto-circuito

O segundo operando avaliado somente se necessrio

Exemplos:

boolean a = true, b = true, c = false;

boolean d = c && b; // O segundo operando no precisa ser avaliado,


pois, para AND lgico, basta um operando seja false para a expresso
ser false.

boolean e = a || c; // O segundo operando no precisa ser avaliado,


pois, para OR lgico, basta um operando seja true para a expresso ser
true.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

47

Operadores condicionais

Operador ternrio ? :

condio ? expresso1 : expresso2

Equivale declarao if-then-else

Avalia a primeira expresso se a condio for true

Exemplo:

Caso contrrio, avalia a segunda expresso


String x = (15 > 10 ? Rogrio : Kal-El); // x recebe Rogrio.

O exemplo equivalente a:

String x;

if (15 > 10)

x = "Rogrio";
else

x = "Kal-El";

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

48

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

49

Hora de praticar

constelacao01.parte04

Exemplo04_OperadoresCondicionais

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

50

Questes de concursos
[UFPR 2010 UFPR - Analista de Tecnologia da Informao] Em
JAVA, os operadores lgicos 'E', 'OU' e 'NO' so representados
respectivamente por:

[A] and, or, not

[B] *, +, ~

[C] &&, ||, !

[D] &, #, $

[E] .and., .or., .not.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

51

Questes de concursos
[UFPR 2010 UFPR - Analista de Tecnologia da Informao] Em
JAVA, os operadores lgicos 'E', 'OU' e 'NO' so representados
respectivamente por:

[A] and, or, not

[B] *, +, ~

[C] &&, ||, !

[D] &, #, $

[E] .and., .or., .not.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

52

Questes de concursos
[UFF 2009 UFF - Analista de Tecnologia da Informao] Analise o
seguinte trecho de cdigo na linguagem Java:

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

53

Questes de concursos
[UFF 2009 UFF - Analista de Tecnologia da Informao] Analise o
seguinte trecho de cdigo na linguagem Java:

int i1 = 5, i2 = 6;

String s1 = (i1 > i2 ? x : y); // s1 recebe y.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

54

Questes de concursos
[UFF 2009 UFF - Analista de Tecnologia da Informao] Aps
rodar o trecho de cdigo acima apresentado, o valor atribudo a
s1 ser:

[A] x;

[B] false;

[C] 5;

[D] 6;

[E] y.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

55

Questes de concursos
[UFF 2009 UFF - Analista de Tecnologia da Informao] Aps
rodar o trecho de cdigo acima apresentado, o valor atribudo a
s1 ser:

[A] x;

[B] false;

[C] 5;

[D] 6;

[E] y.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

56

Operadores de bits

Operadores:

Complemento ~

AND &

OR |

XOR ^

Deslocamento esquerda <<

Deslocamento direita >>

Deslocamento direita sem sinal >>>

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

57

Operadores de bits

Operador complemento ~

Inverte o bits de um nmero


O operador unrio complemento lgico ! inverte o valor de um
boolean
Exemplo:

byte x = ~20; // x recebe -21.

Valor

128

64

32

16

Valor
final

20

20

~20

-21

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

58

Operadores de bits

A linguagem Java utiliza a notao de complemento de dois

Como saber que 11101011 (2) em byte representa -21 (10):

O bit de sinal 1

Diminui-se 1 dos bits

00010101

Transformar-se o nmero de base 2 para base 10

11101010

Inverte-se os bits

Ento um nmero negativo

21

Conclui-se que 11101011 (2) -21 (10)

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

59

Operadores de bits

Operadores AND &, OR | e XOR ^

Operam sobre literais inteiros

Tipos dos literais inteiros:

int (padro)
long

Se os operandos forem booleanos, o resultado ser igual ao


obtido com operadores AND lgico && e OR lgico ||

Mas sem curto-circuito

Todos os operandos sero avaliados, mesmo sem necessidade

Os operadores condicionais AND lgico && e OR lgico ||


possuem dois smbolos cada

Os de bits AND & e OR I possuem apenas um cada

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

60

Operadores de bits
Valor

128

64

32

16

Valor
final

93

93

-21

-21

AND &

73

OR I

-1

XOR ^

-74

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

61

Operadores de bits

Operadores de deslocamento:

esquerda <<

direita >>

direita sem sinal >>>

Operam sobre literais inteiros

Tipos dos literais inteiros:

int (padro)
long

Tipos de menor preciso (byte e short) so convertidos em int


antes de realizar operao

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

62

Operadores de bits

Operador de descolamento esquerda <<

Desloca para esquerda os bits do primeiro operando esquerdo


pelo nmero de bits especificado pelo segundo operando

Preenche na direita com zero

Exemplo:

byte x = 13 << 2; // x recebe 52.

byte y = -21 << 2; // y recebe -84.

Visualizando:

13: 00000000000000000000000000001101

52: 00000000000000000000000000110100

-21: 11111111111111111111111111101011

-84: 11111111111111111111111110101100

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

63

Operadores de bits
Valor

128

64

32

16

Valor
final

13

13

13 << 2

52

-21

-21

-21 << 2

-84

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

64

Operadores de bits

Operador de descolamento direita >>

Desloca para direita os bits do primeiro operando esquerdo pelo


nmero de bits especificado pelo segundo operando
Preenche na esquerda com zero ou um

Dependendo do bite de sinal

Exemplo:

byte x = 13 >> 2; // x recebe 3.

byte y = -21 >> 2; // y recebe -6.

Visualizando:

13: 00000000000000000000000000001101

3: 00000000000000000000000000000011

-21: 11111111111111111111111111101011

-6: 11111111111111111111111111111010
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

65

Operadores de bits
Valor

128

64

32

16

Valor
final

13

13

13 >> 2

-21

-21

-21 >> 2

-6

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

66

Operadores de bits

Operador de deslocamento direita sem sinal >>>

Desloca para direita os bits do primeiro operando esquerdo pelo


nmero de bits especificado pelo segundo operando
Preenche na esquerda com zero

Independentemente do bit de sinal

Exemplo:

byte x = 13 >>> 2; // x recebe 3.

byte y = (byte) (-21 >>> 2); // y recebe -6.

Visualizando:

13: 00000000000000000000000000001101

3: 00000000000000000000000000000011

-21: 11111111111111111111111111101011

1073741818 (byte, -6): 00111111111111111111111111111010


rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

67

Operadores de bits
Valor

128

64

32

16

Valor
final

13

13

13 >>> 2

-21

-21

-21 >>> 2

-6

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

68

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

69

Hora de praticar

constelacao01.parte04

Exemplo05_OperadoresBits

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

70

Questes de concursos
[CESPE 2010 MPU Tcnico de Informtica] Julgue o item a
seguir, relativo ao cdigo abaixo, escrito na linguagem Java.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

71

Questes de concursos
[CESPE 2010 MPU Tcnico de Informtica] Julgue o item a
seguir, relativo ao cdigo abaixo, escrito na linguagem Java.

[150] O cdigo na linha 7 produzir a apresentao do


nmero 4, valor que a varivel x ter quando a linha 7 for
executada.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

72

Questes de concursos
[CESPE 2010 MPU Tcnico de Informtica] Julgue o item a
seguir, relativo ao cdigo abaixo, escrito na linguagem Java.

[150] O cdigo na linha 7 produzir a apresentao do


nmero 4, valor que a varivel x ter quando a linha 7 for
executada.

Gabarito: ERRADO.

Justificativa da mudana de gabarito:

A linha 5 cdigo apresentado do comando est escrito x = x <<<


2; com o operador (<<<) no existe para a linguagem Java, existe
um erro. Sendo errado o cdigo, no apresentar resultado. Assim
a questo est ERRADA.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

73

Questes de concursos
[CESPE 2010 MPU Tcnico de Informtica Adaptado] Julgue o
item a seguir, relativo ao cdigo abaixo, escrito na linguagem
Java.

public class MpuJava3 {

public static void main(String args[]) {

int x;

x = +16 >> 1;

x = x >>> 2;

x = x << 1;

System.out.println(x);

}
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

74

Questes de concursos
[CESPE 2010 MPU Tcnico de Informtica Adaptado] Julgue o
item a seguir, relativo ao cdigo abaixo, escrito na linguagem
Java.

Visualizando:

16:

x = +16 >> 1 (x = 8):

0000 0000 0000 0000 0000 0000 0000 1000

x = x >>> 2 (x = 2):

0000 0000 0000 0000 0000 0000 0001 0000

0000 0000 0000 0000 0000 0000 0000 0010

x = x << 1 (x = 4):

000 0000 0000 0000 0000 0000 0000 00100


rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

75

Questes de concursos
[CESPE 2010 MPU Tcnico de Informtica Adaptado] Julgue o
item a seguir, relativo ao cdigo abaixo, escrito na linguagem
Java.

public class MpuJava3 {

public static void main(String args[]) {

int x;

x = +16 >> 1; // x recebe 8.

x = x >>> 2; // x recebe 2.

x = x << 1; // x recebe 4.

System.out.println(x); // Imprime 4.

}
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

76

Questes de concursos
[CESPE 2010 MPU Tcnico de Informtica Adaptado] Julgue o
item a seguir, relativo ao cdigo abaixo, escrito na linguagem
Java.

[1] O cdigo System.out.println(x) produzir a apresentao


do nmero 4, valor que a varivel x ter quando esse cdigo
for executado.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

77

Questes de concursos
[CESPE 2010 MPU Tcnico de Informtica Adaptado] Julgue o
item a seguir, relativo ao cdigo abaixo, escrito na linguagem
Java.

[1] O cdigo System.out.println(x) produzir a apresentao


do nmero 4, valor que a varivel x ter quando esse cdigo
for executado.

Gabarito: CERTO.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

78

Questes de concursos
[CESPE 2009 ANAC Cargo 11] Julgue o item seguinte.

[93] A linguagem de programao Java permite operaes de


bit, como, por exemplo, AND (&) e OR (|).

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

79

Questes de concursos
[CESPE 2009 ANAC Cargo 11] Julgue o item seguinte.

[93] A linguagem de programao Java permite operaes de


bit, como, por exemplo, AND (&) e OR (|).

Gabarito: CERTO.
Operadores condicionais AND lgico && e OR lgico || possuem
dois smbolos cada
Operadores de bits AND & e OR I possuem apenas um cada

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

80

Questes de concursos
[CESGRANRIO 2012 Petrobrs - Analista de Sistemas Jnior
Engenharia de Software Questo 43] Seja o seguinte trecho de
cdigo Java, onde o operador >> representa um shift direita:

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

81

Questes de concursos
[CESGRANRIO 2012 Petrobrs - Analista de Sistemas Jnior
Engenharia de Software Questo 43] O que ser exibido no
console quando for executado o mtodo main()?

Visualizando:

(short) ffff9c: 1111 1111 1001 1100

ffff9c >> 2: 1111 1111 1111 1111 1110 0111

(short): 1111 1111 1110 0111

Verificando qual o valor em decimal do valor acima em binrio:

O bit de sinal 1: ento um nmero negativo

Diminui-se 1 dos bits: 1111 1111 1110 0110

Inverte-se os bits: 0000 0000 0001 1001

Transformando o nmero na base 2 para base 10: 25

Conclui-se que o valor na base 2 -25 na base 10


rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

82

Questes de concursos
[CESGRANRIO 2012 Petrobrs - Analista de Sistemas Jnior
Engenharia de Software Questo 43] O que ser exibido no
console quando for executado o mtodo main()?

[A] -400

[B] -200

[C] -25

[D] 25

[E] 400

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

83

Questes de concursos
[CESGRANRIO 2012 Petrobrs - Analista de Sistemas Jnior
Engenharia de Software Questo 43] O que ser exibido no
console quando for executado o mtodo main()?

[A] -400

[B] -200

[C] -25

[D] 25

[E] 400

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

84

Operadores de atribuio

Operadores:

Atribuio simples =

Atribuio composta (juno com os operadores aritmticos):

Incremental +=

Decremental -=

Multiplicativa *=

Divisria /=

Modular %=

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

85

Operadores de atribuio

Operadores:

Atribuio composta (juno com os operadores de bits):

&=

^=

|=

<<=

>>=

>>>=

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

86

Operadores de atribuio

Operador de atribuio simples =

o operador mais comum de ocorrer

Possui funo diferente do do operador de igualdade ==

No usado para comparao

Copia um valor do lado direito para a varivel do lado esquerdo

Sendo esse valor:

De uma varivel
Um literal

Exemplo:

int x = 15; // Copia o valor literal inteiro 15 para a varivel x.


int y = x; // Copia o valor do varivel x para a varivel y.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

87

Operadores de atribuio

Operadores de atribuio composta

x op= y;

equivalente a x = (T) (x op y);

Sendo:

Casting implcito
x e y: operandos
op: operao
T: tipo de x

Exemplo:

byte x = 4;

int y = 3;

x += y; // O compilador no acusa erro.

x = (byte) (x + y); // Expresso equivalente com a anterior.

x = x + y; // Haver um erro em tempo de compilao.


rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

88

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

89

Hora de praticar

constelacao01.parte05

Exemplo06_OperadoresAtribuicao

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

90

Questes de concursos
[FCC 2012 TRT 2 Regio Tcnico Judicirio Especialidade
Informtica Questo 53 - Adaptada] Julgue as letras a seguir:

[C] o operador && no existe no Java. Em seu lugar, deve ser


colocado o operador & que significa E.
[D] o operador == no existe no Java. Em seu lugar, deve ser
colocado o operador = que simboliza igualdade.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

91

Questes de concursos
[FCC 2012 TRT 2 Regio Tcnico Judicirio Especialidade
Informtica Questo 53 - Adaptada] Julgue as letras a seguir:

[C] o operador && no existe no Java. Em seu lugar, deve ser


colocado o operador & que significa E.

Gabarito: ERRADO.

&&: operador AND lgico

&: operador de bit AND

[D] o operador == no existe no Java. Em seu lugar, deve ser


colocado o operador = que simboliza igualdade.

Gabarito: ERRADO.

==: operador igual a

=: operador de atribuio simples


rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

92

Questes de concursos
[FCC 2008 TCE/AL Programador Questo 46] Considerando
que as variveis Java X, Y e Z foram todas inicializadas com zero,
os resultados das mesmas aps as alteraes realizadas pelas
atribuies X *= 2, Y = 5 e Z /=3, respectivamente, sero

[A] 0, -5 e 0

[B] 0, 5 e 0

[C] 1, -5 e 3

[D] 2, -5 e 3

[E] 2, 5 e 3

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

93

Questes de concursos
[FCC 2008 TCE/AL Programador Questo 46] Considerando
que as variveis Java X, Y e Z foram todas inicializadas com zero,
os resultados das mesmas aps as alteraes realizadas pelas
atribuies X *= 2, Y = 5 e Z /=3, respectivamente, sero

X = 0;

X *= 2; // X = (tipo do X) 0 * 2; X recebe 0.

Y = 0;

Y = 5; // Y = (tipo do Y) 0 5; // Y recebe -5.

Z = 0;

Z /=3; // Z = (tipo do Z) 0 / 3; // Z recebe 0.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

94

Questes de concursos
[FCC 2008 TCE/AL Programador Questo 46] Considerando
que as variveis Java X, Y e Z foram todas inicializadas com zero,
os resultados das mesmas aps as alteraes realizadas pelas
atribuies X *= 2, Y = 5 e Z /=3, respectivamente, sero

[A] 0, -5 e 0

[B] 0, 5 e 0

[C] 1, -5 e 3

[D] 2, -5 e 3

[E] 2, 5 e 3

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

95

Questes de concursos
[FCC 2007 MPU - Analista de Informtica - Desenvolvimento de
Sistemas Questo 57] Analise os seguintes valores, variveis e
operaes usando expresses Java:

byte j = 30;

short k = 54;

int m = 40;

long n = 12L;

long resultado = 0L;

resultado += j;

resultado += k;

resultado /= n;

resultado = m;
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

96

Questes de concursos
[FCC 2007 MPU - Analista de Informtica - Desenvolvimento de
Sistemas Questo 57] Analise os seguintes valores, variveis e
operaes usando expresses Java:

byte j = 30;

short k = 54;

int m = 40;

long n = 12L;

long resultado = 0L;

resultado += j; // resultado = (long) 0 + 30 = 30.

resultado += k; // resultado = (long) 30 + 54 = 84.

resultado /= n; // resultado = (long) 84 / 12 = 7.

resultado = m; // resultado = (long) 7 - 40 = -33.


rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

97

Questes de concursos
[FCC 2007 MPU - Analista de Informtica - Desenvolvimento de
Sistemas Questo 57] Aps a ltima operao, o resultado ser
igual a

[A] -7

[B] -32

[C] -33

[D] 60

[E] 84

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

98

Questes de concursos
[FCC 2007 MPU - Analista de Informtica - Desenvolvimento de
Sistemas Questo 57] Aps a ltima operao, o resultado ser
igual a

[A] -7

[B] -32

[C] -33

[D] 60

[E] 84

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

99

Questes de concursos
[CESGRANRIO 2008 TJ/RO - Analista Judicirio - Anlise de
Sistemas - Desenvolvimento Questo 23] Em Java, a atribuio
composta x += y equivalente a x = (T) (x + y), onde T o tipo
de x. Com base nesta premissa, considere as duas linhas de
programa a seguir.

x += y;

x = x + y;

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

100

Questes de concursos
[CESGRANRIO 2008 TJ/RO - Analista Judicirio - Anlise de
Sistemas - Desenvolvimento Questo 23] A primeira linha
compilar, e a segunda linha ir gerar um erro em tempo de
compilao, se x e y forem declarados, respectivamente, como:

[A] short e int

[B] int e short

[C] int e char

[D] String e int

[E] int e String

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

101

Questes de concursos
[CESGRANRIO 2008 TJ/RO - Analista Judicirio - Anlise de
Sistemas - Desenvolvimento Questo 23] A primeira linha
compilar, e a segunda linha ir gerar um erro em tempo de
compilao, se x e y forem declarados, respectivamente, como:

[A] short e int

[B] int e short

[C] int e char

[D] String e int

[E] int e String

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

102

Questes de concursos
[CESGRANRIO 2008 TJ/RO - Analista Judicirio - Anlise de
Sistemas - Desenvolvimento Questo 23] A primeira linha
compilar, e a segunda linha ir gerar um erro em tempo de
compilao, se x e y forem declarados, respectivamente, como:

[A] short e int

Na linha da atribuio composta, no houve erro, pois h o


casting embutido;
Na outra linha houve erro porque o resultado da operao, por y
ser do tipo int , do tipo int, ento necessrio o casting para
que x possa receber o resultado

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

103

Questes de concursos
[CESGRANRIO 2008 TJ/RO - Analista Judicirio - Anlise de
Sistemas - Desenvolvimento Questo 23] A primeira linha
compilar, e a segunda linha ir gerar um erro em tempo de
compilao, se x e y forem declarados, respectivamente, como:

[B] int e short

Com isso nenhuma das linhas gera erro


Na segunda, como x do tipo int, ento o tipo do resultado da
operao do tipo int

Porm o resultado ser atribudo varivel x tambm do tipo int

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

104

Questes de concursos
[CESGRANRIO 2008 TJ/RO - Analista Judicirio - Anlise de
Sistemas - Desenvolvimento Questo 23] A primeira linha
compilar, e a segunda linha ir gerar um erro em tempo de
compilao, se x e y forem declarados, respectivamente, como:

[C] int e char

Com isso nenhuma das linhas gera erro


Na segunda, como x do tipo int, ento o tipo do resultado da
operao do tipo int

Porm o resultado ser atribudo varivel x tambm do tipo int

Relembrando:

Variveis do tipo char podem receber valores de 0 a 65.536

H a converso automtica de char para int

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

105

Questes de concursos
[CESGRANRIO 2008 TJ/RO - Analista Judicirio - Anlise de
Sistemas - Desenvolvimento Questo 23] A primeira linha
compilar, e a segunda linha ir gerar um erro em tempo de
compilao, se x e y forem declarados, respectivamente, como:

[D] String e int

Com isso nenhuma das linhas gera erro


Em ambas as linhas h uma concatenao de String, entre a
String x e o valor de y
Relembrando:

O operador de adio trabalha como concatenador de Strings

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

106

Questes de concursos
[CESGRANRIO 2008 TJ/RO - Analista Judicirio - Anlise de
Sistemas - Desenvolvimento Questo 23] A primeira linha
compilar, e a segunda linha ir gerar um erro em tempo de
compilao, se x e y forem declarados, respectivamente, como:

[E] int e String

Com isso ambas as linhas geram erro

No como trabalhar uma String como numeral

A varivel int x no pode receber a adio dela mais uma varivel


do tipo String y

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

107

Precedncia de operadores
Operador

Precedncia

Unrios de incremento e
decremento ps-fixos

var++ var--

Outros unrios

++var --var +var -var ~ !

Multiplicativos

*/%

Aditivos

+-

Shift

<< >> >>>

Relacionais

< > <= >= instanceof

Igualdade

== !=

AND

&

XOR

OR

AND lgico

&&

OR lgico

||

Ternrio

?:

Atribuio

= += -= *= /= %= &= ^= |= <<= >>= >>>=

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

108

Precedncia de operadores

Os operadores na linguagem Java possuem precedncias


A tabela est ordenada em ordem decrescente de prioridade
entre os operadores
Operadores na mesma linha tm a mesma precedncia
As operaes entre parnteses possuem precedncia maior do
que as que no esto

Sempre resolvemos as operaes de parnteses mais internos

Exemplos:

int x = 15 + 3 / 3; // x recebe 16.

int y = (15 + 3) / 3; // y recebe 6.

int z = ((15 + 3) / 3) * 4; // z recebe 24.


rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

109

Questes de concursos
[FUMARC 2011 BDMG - Analista de Sistemas] Analise o seguinte
programa desenvolvido na linguagem Java.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

110

Questes de concursos
[FUMARC 2011 BDMG - Analista de Sistemas] Analise o seguinte
programa desenvolvido na linguagem Java.

Lembrete:

Complemento lgico ! tem precedncia em relao ao AND


lgico &&
AND lgico && tem precedncia em relao ao OR lgico
As operaes entre parnteses possuem precedncia maior do
que as que no esto

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

111

Questes de concursos
[FUMARC 2011 BDMG - Analista de Sistemas] Analise o seguinte
programa desenvolvido na linguagem Java.

Dados para a primeira impresso:

A = true e B = false

A || B && A || !B

true || false && true || !false

true || false && true || true

true || false || true

true || true

true

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

112

Questes de concursos
[FUMARC 2011 BDMG - Analista de Sistemas] Analise o seguinte
programa desenvolvido na linguagem Java.

Dados para a segunda impresso:

A = true e B = false

!(A || !B) && (A || B)

!(true || !false) && (true || false)

!(true || true) && (true || false)

!true && true

false && true

false

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

113

Questes de concursos
[FUMARC 2011 BDMG - Analista de Sistemas] Analise o seguinte
programa desenvolvido na linguagem Java.

Dados para a terceira impresso:

A = true e B = false

(A && B) && (!A || !B)

(true && false) && (!true || !false)

(true && false) && (false || true)

false && true

false

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

114

Questes de concursos
[FUMARC 2011 BDMG - Analista de Sistemas] Analise o seguinte
programa desenvolvido na linguagem Java.

Dados para a quarta impresso:

A = true e B = false

!A && B || A && !B

!true && false || true && !false

false && false || true && true

false || true

true

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

115

Questes de concursos
[FUMARC 2011 BDMG - Analista de Sistemas] Analise o seguinte
programa desenvolvido na linguagem Java.

public class testeLogica {

public static void main(String[] args) {

boolean A, B;

A = true;

B = false;

System.out.println((A || B && A || !B) + " "); // Imprime true .

System.out.println((!(A || !B) && (A || B)) + " "); // Imprime false .

System.out.println(((A && B) && (!A || !B)) + " "); // Imprime false .

System.out.println((!A && B || A && !B) + " "); // Imprime true .

}
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

116

Questes de concursos
[FUMARC 2011 BDMG - Analista de Sistemas] Assinale a opo
com a sequncia CORRETA, de cima para baixo.

[A] false false false true

[B] false true false true

[C] true false false true

[D] true false true false

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

117

Questes de concursos
[FUMARC 2011 BDMG - Analista de Sistemas] Assinale a opo
com a sequncia CORRETA, de cima para baixo.

[A] false false false true

[B] false true false true

[C] true false false true

[D] true false true false

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

118

Questes de concursos
[CESPE 2010 MPU Tcnico de Informtica] Julgue os itens a
seguir, acerca do cdigo abaixo, escrito em Java.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

119

Questes de concursos
[CESPE 2010 MPU Tcnico de Informtica] Julgue os itens a
seguir, acerca do cdigo acima, escrito em Java.

[144] Na linha 9, o cdigo produzir a apresentao do


contedo da varivel mpu, que, no caso, ser igual a true.
[145] Aps a execuo da linha 8, o cdigo produzir a
apresentao do valor da varivel i, que ser igual a 2.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

120

Questes de concursos
[CESPE 2010 MPU Tcnico de Informtica] Julgue os itens a
seguir, acerca do cdigo acima, escrito em Java.

[144] Na linha 9, o cdigo produzir a apresentao do


contedo da varivel mpu, que, no caso, ser igual a true.

[145] Aps a execuo da linha 8, o cdigo produzir a


apresentao do valor da varivel i, que ser igual a 2.

Gabarito: ANULADO.

Gabarito: ANULADO.

Justificativa da anulao dos gabaritos:

A linha 6 que estava escrito mpu = (v ((i++) == 0)); deveria


estar escrito mpu = (v || ((i++) == 0)); E a linha 7 que estava
escrito mpu = (f ((i+=2) > 2)); deveria estar escrito mpu = (f ||
((i+=2) > 2));
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

121

Questes de concursos
[CESPE 2010 MPU Tcnico de Informtica Adaptado] Julgue os
itens a seguir, acerca do cdigo abaixo, escrito em Java.

public class MpuJava1 {

public static void main(String args[]) {

int i = 1;

boolean v = true;

boolean f = false, mpu;

mpu = (v || ((i++) == 0));

mpu = (f || ((i += 2) > 2));

System.out.println(i);

System.out.println(mpu);

}
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

122

Questes de concursos
[CESPE 2010 MPU Tcnico de Informtica Adaptado] Julgue os
itens a seguir, acerca do cdigo abaixo, escrito em Java.

public class MpuJava1 {

public static void main(String args[]) {

int i = 1;

boolean v = true;

boolean f = false, mpu;

mpu = (v || ((i++) == 0)); // mpu = true e i = 2.

mpu = (f || ((i += 2) > 2)); // mpu = true e i = 4.

System.out.println(i); // Imprime 4.

System.out.println(mpu); // Imprime true.

}
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

123

Questes de concursos
[CESPE 2010 MPU Tcnico de Informtica Adaptado] Julgue os
itens a seguir, acerca do cdigo acima, escrito em Java.

[1] Na linha onde h a instruo System.out.println(mpu), o


cdigo produzir a apresentao do contedo da varivel
mpu, que, no caso, ser igual a true.
[2] Aps a execuo da linha onde h a instruo
System.out.println(i), o cdigo produzir a apresentao do
valor da varivel i, que ser igual a 2.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

124

Questes de concursos
[CESPE 2010 MPU Tcnico de Informtica Adaptado] Julgue os
itens a seguir, acerca do cdigo acima, escrito em Java.

[1] Na linha onde h a instruo System.out.println(mpu), o


cdigo produzir a apresentao do contedo da varivel
mpu, que, no caso, ser igual a true.

Gabarito: CERTO.

[2] Aps a execuo da linha onde h a instruo


System.out.println(i), o cdigo produzir a apresentao do
valor da varivel i, que ser igual a 2 4.

Gabarito: ERRADO.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

125

Respostas dos desafios

[RGA] O que so operadores?

So smbolos especiais que:

Realizam operaes especficas em um a trs operandos

Retornam um resultado

[RGA] Quais so os operadores aritmticos?

Adio +

Subtrao -

Multiplicao *

Diviso /

Mdulo ou resto da diviso %

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

126

Respostas dos desafios

[RGA] Alm da operao aritmtica de adio, qual a outra


funo do operador +?

Tambm usado para concatenao de String

Exemplo:

String y = Kal-El + Gildo Arajo + x; // y ter valor de Kal-El


Gildo Araujo9.

[RGA] Nas declaraes double x = 19 / 3; e double y = 19.0 /


3;, as variveis no recebero o mesmo valor.

Gabarito: ERRADO.

double x = 19 / 3; // x recebe 6.0.

double y = 19.0 / 3; // y recebe 6.333333333333333.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

127

Respostas dos desafios

[RGA] O que pode surgir na diviso de inteiros? E na diviso


de pontos flutuantes?

Diviso de nmeros inteiros:

Quando o divisor for 0, leva-se a uma exceo

Diviso de nmeros de ponto flutuante:

Quando da diviso de:

Nmero positivo por 0, produz resultado infinito positivo

Nmero negativo por 0, produz resultado infinito negativo


0 por 0, produz NaN (not a number)

[RGA] Qual a diferena entre o operador / e o %?

Operador / representa o quociente de uma diviso

Operador % representa o resto de uma diviso

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

128

Respostas dos desafios

[RGA] Quais so os operadores unrios?

Mais +

Menos -

Incremento ++

Decremento -

Complemento lgico !

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

129

Respostas dos desafios

[RGA] Qual a diferena entre usarmos ++x (ou --x) e x++ (ou
x--)?

Ao utilizarmos os operadores de incremento (++) e decremento


(--):

Pr fixados

O valor avaliado o valor incrementado (ou decrementado)

Ps fixados

O valor avaliado valor original

Depois ele incrementado (ou decrementado)

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

130

Respostas dos desafios

[RGA] Quais so os operadores de igualdade e relacionais?

Igual a ==

Diferente de !=

Maior que >

Menor que <

Maior que ou igual a >=

Menor que ou igual a <=

instanceof

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

131

Respostas dos desafios

[RGA] A seguinte declarao de varivel int x == 15; est


correta.

Gabarito: ERRADO.
O operadores igual a == possui funo diferente do do operador
de atribuio simples =

[RGA] Qual o resultado das operaes realizadas com os


operadores de igualdade e relacionais?

O resultado so literais booleanos

boolean x = 1 < 2; // x recebe true porque 1 menor que 2.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

132

Respostas dos desafios

[RGA] O que o operador instanceof?

chamado de operador de comparao de tipo

Testa se um objeto instncia de:

Uma classe

Uma subclasse

Uma classe que implementa uma interface particular

[RGA] Quais so os operadores condicionais?

AND lgico &&

OR lgico ||

Ternrio ? :

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

133

Respostas dos desafios

[RGA] Qual o resultado das operaes realizadas com os


operadores && e ||?

O resultado so literais booleanos

[RGA] Como os operadores && e || so chamados? Por qu?

Operadores de curto-circuito

O segundo operando avaliado somente se necessrio

[RGA] O valor da varivel x na declarao String x = (true ?


Sim : No); Sim.

Gabarito: CERTO.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

134

Respostas dos desafios

[RGA] Quais so os operadores de bits?

Complemento ~

Deslocamento esquerda <<

Deslocamento direita >>

Deslocamento direita sem sinal >>>

AND &

OR |

XOR ^

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

135

Respostas dos desafios

[RGA] Qual a diferena entre o operador >> e o >>>?

Ambos deslocam para direita os bits do primeiro operando


esquerdo pelo nmero de bits especificado pelo segundo
operando
Porm:

>> preenche com zero ou um na esquerda, dependendo do bit de


sinal

>>> preenche com zero na esquerda, independente do bit de sinal

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

136

Respostas dos desafios

[RGA] Qual a diferena entre operadores condicionais (&& e ||)


e os de bits (&, | e ^)?

Operadores condicionais (&& e ||)

O resultado das operaes realizadas com esses operadores so


literais booleanos

So chamados operadores de curto-circuito

O segundo operando avaliado somente se necessrio

Operadores de bits (&, | e ^)

Operam sobre literais inteiros

Se os operandos forem booleanos, o resultado ser igual ao obtido


com operadores lgicos (&& e ||)

Mas sem curto-circuito

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

137

Respostas dos desafios

[RGA] Quais so os operadores de atribuio?

Atribuio simples =

Juno com os operadores aritmticos:

Incremental +=

Decremental -=

Multiplicativa *=

Divisria /=

Modular %=

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

138

Respostas dos desafios

[RGA] Quais so os operadores de atribuio?

Juno com os operadores de bits:

&=

^=

|=

<<=

>>=

>>>=

[RGA] O seguinte cdigo est correto: if (x == 15) {...}

Gabarito: ERRADO.
O operador de atribuio simples = no usado para
comparao
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

139

Referncias

Apostila Java e Orientao a Objetos da Caelum:


http://www.caelum.com.br/download/caelum-java-objetosfj11.pdf
Apostila Java e Orientao a Objetos da K19:
http://www.k19.com.br/downloads/apostilas/java/k19-k11orientacao-a-objetos-em-java
HELDER, Rocha. Curso J100: Programao Orientada a Objetos
usando Java: http://www.argonavis.com.br/cursos/java/j100/
HORSTMANN, Cay S. e CORNELL, Gary. Core Java Volume I Fundamentos. 8 Edio. Editora Pearson Prentice Hall, 2010.
SIERRA, Kate e BATES, Bert. Certificao Sun para
Programador e Desenvolvedor em Java 2 Guia de Estudos. 3
Edio. Editora Alta Books, 2003.
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

140

Referncias

The Java Language Specification - Java SE 7 Edition:


http://docs.oracle.com/javase/specs/jls/se7/html/
The Java Tutorials - Language Basics:
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

141

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

142