Você está na página 1de 102

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 III
Tipos primitivos e
valores literais
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

Tpicos

Desafios

Tipagem esttica e fortemente tipada

Questes de concursos

8 tipos primitivos

Intervalos dos tipos numricos integrais

Simplificando a tabela de tipos primitivos

Inicializao das variveis

Hora de praticar

Questes de concursos

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

Tpicos

Literais inteiros

Hora de praticar

Literais de ponto flutuante

Hora de praticar

Literais booleanos

Literais de caracteres

Literais de String

Hora de praticar

Questes de concursos

Converses de tipos primitivos


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

Tpicos

Casting de tipos primitivos

Hora de praticar

Questes de concursos

Respostas dos desafios

Referncias

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

Desafios

[RGA] O que uma linguagem de tipagem esttica? E uma


fortemente tipada?
[RGA] Qual o conceito resultante da juno de tipagem
esttica e fortemente tipada?

[RGA] Quantos e quais so os tipos primitivos em Java?

[RGA] Qual o intervalo dos tipos do grupo BSIL?

[RGA] Quantos bits representam cada tipo primitivo?

[RGA] O tipo char no um tipo numrico integral.


[CERTO/ERRADO]
[RGA] Apenas as variveis locais so inicializadas
automaticamente. [CERTO/ERRADO]
[RGA] O que so valores literais? E como eles podem ser?
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

10

Desafios

[RGA] Quais so os tipos de literais?

[RGA] Como os literais de inteiros so expressos?

[RGA] Quais so os tipos dos literais inteiros e qual o tipo


padro?
[RGA] Como os literais de ponto flutuante so expressos?
[RGA] Quais so os tipos dos literais de ponto flutuante e qual
o tipo padro?
[RGA] Como os literais de caracteres so expressos?
[RGA] Os literais de caracteres devem vir entre aspas duplas.
[CERTO/ERRADO]

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

11

Desafios

[RGA] Quais so os valores que tambm podemos atribuir s


variveis do tipo char?
[RGA] Em que consistem os literais de String?
[RGA] Literais de String devem vir entre aspas simples ou
duplas?
[RGA] O literal a diferente do literal 'a'. [CERTO/ERRADO]
[RGA] A seguinte expresso char aChar = a; est correta.
[CERTO/ERRADO]
[RGA] As converses de tipos primitivos ocorrero
automaticamente quando houver garantia de no haver perda
de preciso. [CERTO/ERRADO]
[RGA] Quais so converses de tipos primitivos que podem
ocorrer perda de preciso?
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

12

Desafios

[RGA] O que casting?


[RGA] No casting, h a indicao explcita do tipo alvo.
[CERTO/ERRADO]
[RGA] Se uma varivel do tipo byte receber o literal 300, sendo
feito casting, ela receber na verdade o valor equivalente a 44.
[CERTO/ERRADO]

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

13

Tipagem esttica e fortemente tipada

A linguagem de programao Java uma linguagem:

De tipagem esttica

Quando o tipo de cada varivel deve ser conhecido em tempo de


compilao

int x = 15;

Fortemente tipada

Quando h a exigncia de que os valores armazenados em uma


varivel sejam compatveis com o tipo dela

int x = 15;

Tipagem estaticamente forte ajuda a detectar erros em tempo


de compilao

int x = 15.7; // h erro, pois so o valor incompatvel com o tipo

int x = (int) 15.7; // usa-se casting, mas h perda dos decimais

int x = 15; // h erro de compilao que nem o casting salva


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

14

Tipagem esttica e fortemente tipada

Valor
Valor
literal
literal

Tipo
Tipo
Tipagem
Tipagem esttica
esttica

Fortemente
Fortemente tipada
tipada

Tipagem
Tipagem estaticamente
estaticamente forte
forte
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

15

Tipagem esttica e fortemente tipada

Valor
Valor
literal
literal

Tipo
Tipo
Tipagem
Tipagem esttica
esttica

Fortemente
Fortemente tipada
tipada

EE

FF

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

16

Questes de concursos
[FCC 2010 TRE/RS Tcnico Judicirio Especialidade
Programao de Sistemas Questo 53] A linguagem de
programao onde o tipo de varivel definido em tempo de
compilao, tem sua estrutura de tipos denominada

[A] fracamente tipada.

[B] fortemente tipada.

[C] dinamicamente tipada.

[D] absolutamente tipada.

[E] estaticamente tipada.

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

17

Questes de concursos
[2010 TRE/RS Tcnico Judicirio Especialidade Programao
de Sistemas Questo 53] A linguagem de programao onde o
tipo de varivel definido em tempo de compilao, tem sua
estrutura de tipos denominada

[A] fracamente tipada.

[B] fortemente tipada.

[C] dinamicamente tipada.

[D] absolutamente tipada.

[E] estaticamente tipada.

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

18

8 tipos primitivos
Tipos
Tipos numricos
numricos
Tipos
Tipos integrais
integrais

Tipo
Tipo boolean
boolean

Tipos
Tipos de
de ponto
ponto flutuante
flutuante

byte
byte
short
short

true
true
float
float

int
int
long
long

double
double

false
false

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

19

8 tipos primitivos
Tipo

Bits

Possui
sinal

Faixa

Valor
padro

byte

Sim

Inteiro: -27 a 27 1 (-128 a 127)

short

16

Sim

Inteiro: -215 a 215 1 (-32.768 a 32.767)

Sim

Inteiro: -231 a 231 1 (-2.147.483.648 a


2.147.483.647)

0L

int

32

long

64

Sim

Inteiro: -263 a 263 1


(-9.223.372.036.854.775.808 a
9.223.372.036.854.775.807)

boolean

1?

No

true ou false

false

char

16

No

Caracteres UNICODE ('\u0000' a '\uffff')

'u\0000'

float

32

Sim

Ponto flutuante: +/-3.4E-38 a +/-3.4E+38

0.0f

double

64

Sim

Ponto flutuante: +/-1.7E-308 a +/1.7E+308

0.0

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

20

Intervalos dos tipos numricos integrais


PSIU
PSIU

byte
byte
-128
-128 aa 127
127
short
short
-32.768
-32.768 aa 32.767
32.767
int
int

BSIL
BSIL
1329
1329

-2.147.483.648
-2.147.483.648 aa 2.147.483.647
2.147.483.647
long
long
-9.223.372.036.854.775.808
-9.223.372.036.854.775.808 aa 9.223.372.036.854.775.807
9.223.372.036.854.775.807

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

21

Intervalos dos tipos numricos integrais


Bytes
Bytes

Bits
Bits

Bytes
Bytes

Bits
Bits

byte
byte

11

88

--

11

boolean
boolean

short
short

22

16
16

22

16
16

char
char

int
int

44

32
32

44

32
32

float
float

long
long

88

64
64

88

64
64

double
double

2x

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

22

Intervalos dos tipos numricos integrais


Bits
Bits

Nmeros
Nmeros negativos
negativos

Nmeros
Nmeros positivos
positivos

Bit
Bit sinal
sinal

Bits
Bits do
do valor
valor

Bit
Bit sinal
sinal

Bits
Bits do
do valor
valor

byte
byte

88

11

77

00

77

short
short

16
16

11

15
15

00

15
15

int
int

32
32

11

31
31

00

31
31

long
long

64
64

11

63
63

00

63
63

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

23

Intervalos dos tipos numricos integrais


Bits
Bits

Valor
Valor limite
limite negativo
negativo

Valor
Valor limite
limite positivo
positivo

bits do valor
-2
-2bits do valor

bits do
do valor
valor - 1
22bits
-1

byte
byte

88

7
-2
-27

2277 -- 11

short
short

16
16

15
-2
-215

15 - 1
2215
-1

int
int

32
32

31
-2
-231

31 - 1
2231
-1

long
long

64
64

63
-2
-263

63 - 1
2263
-1

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

24

Intervalos dos tipos numricos integrais


Negativo
Negativo

byte
byte

short
short

int
int

long
long

Positivo
Positivo

-128,
-128, -127,
-127, ,
, -1
-1

00

1,
1, 2,
2,
126,
126, 127
127

256
256
-32.768,
-32.768, -32.767,
-32.767, ...,
..., -1
-1

00

1,
1, ...,
..., 32.766,
32.766, 32.767
32.767

65.536
65.536
-2.147.483.648,
-2.147.483.648, ...,
..., -1
-1

00

1,
1, ...,
..., 2.147.483.647
2.147.483.647

4.294.967.296
4.294.967.296
-9.223.372.036.854.775.808
-9.223.372.036.854.775.808

00

9.223.372.036.854.775.807
9.223.372.036.854.775.807

nmero
nmero grande
grande para
para dedu!
dedu! =D
=D
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

25

Simplificando a tabela de tipos primitivos

Quantos so os tipos primitivos:

Quais so os tipos primitivos

BSIL

BCFD

1329

O tipo boolean representa 1 bit de informao

boolean, char, float e double

Intervalos dos tipos numricos integrais BSIL (exceto char):

byte, short, int, long

Mas seu tamanho no precisamente definido

O tipo char tambm um tipo numrico integral


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

26

Inicializao das variveis

As variveis de escopo de classe so inicializadas


automaticamente com valores padres dos tipos

Variveis estticas

Variveis de instncia

As variveis so inicializadas pelos valores padres:

0 (zero)

false

As variveis locais necessitam serem explicitamente


inicializadas

Se no fizermos isso, ocorrer um erro de compilao

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

27

Tipos primitivos

Agora entendo essa


tabela diretinho! =)
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

28

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

29

Hora de praticar

constelacao01.parte03

Exemplo01_TiposPrimitivos

constelacao01.parte03.classes

TiposPrimitivos

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

30

Questes de concursos
[FCC 2012 TRE/CE Tcnico Judicirio Especialidade
Programao de Sistemas Questo 25] Em uma linguagem de
programao, considere um tipo de dado inteiro que utiliza 2
bytes de memria para seu armazenamento. Quantos valores
nicos diferentes possvel colocar nesse espao no decorrer da
execuo de um programa?

[A] 256.

[B] 32768.

[C] 65536.

[D] 16777216.

[E] 4294967296.

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

31

Questes de concursos
[FCC 2012 TRE/CE Tcnico Judicirio Especialidade
Programao de Sistemas Questo 25] Em uma linguagem de
programao, considere um tipo de dado inteiro que utiliza 2
bytes de memria para seu armazenamento. Quantos valores
nicos diferentes possvel colocar nesse espao no decorrer da
execuo de um programa?

[A] 256.

[B] 32768.

[C] 65536.

[D] 16777216.

[E] 4294967296.

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

32

Questes de concursos
[FCC 2011 Infraero - Analista de Sistemas - Desenvolvimento e
Manuteno Questo 53] No Java, um tipo inteiro (int) utiliza
quatro bytes para armazenamento. A faixa mxima possvel de
valores inteiros para se armazenar em uma varivel do tipo
primitivo int de:

[A] 8388608 a 8388607.

[B] 128 a 127.

[C] 32768 a 32767.

[D] 9223372036854775808 a 9223372036854775807.

[E] 2147483648 a 2147483647.

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

33

Questes de concursos
[FCC 2011 Infraero - Analista de Sistemas - Desenvolvimento e
Manuteno Questo 53] No Java, um tipo inteiro (int) utiliza
quatro bytes para armazenamento. A faixa mxima possvel de
valores inteiros para se armazenar em uma varivel do tipo
primitivo int de:

[A] 8388608 a 8388607.

[B] 128 a 127. byte

[C] 32768 a 32767. short

[D] 9223372036854775808 a 9223372036854775807. long

[E] 2147483648 a 2147483647.

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

34

Questes de concursos
[FCC 2007 MPU - Analista de Informtica - Desenvolvimento de
Sistemas Questo 58] Quanto s variveis Java, um inteiro de
64 bits em notao de complemento de dois que pode assumir
valores entre 263 e 2631

[A] long.

[B] short.

[C] float.

[D] byte.

[E] double.

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

35

Questes de concursos
[FCC 2007 MPU - Analista de Informtica - Desenvolvimento de
Sistemas Questo 58] Quanto s variveis Java, um inteiro de
64 bits em notao de complemento de dois que pode assumir
valores entre 263 e 2631

[A] long.

[B] short.

[C] float.

[D] byte.

[E] double.

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

36

Questes de concursos
[ESAF 2012 CGU - Analista de Desenvolvimento de Sistemas
Questo 13] Os tipos primitivos da linguagem Java so

[A] boolean, byte, narrow, int, wide, fixed, double, char.

[B] boolean, byte, short, int, long, float, double, char.

[C] buffered, byte, double-byte, single, long, float, double,


char.
[D] logical, boolean, short, local, extended, float, double,
cast.
[E] boolean, byte, short, integral, partial, long, float, char.

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

37

Questes de concursos
[ESAF 2012 CGU - Analista de Desenvolvimento de Sistemas
Questo 13] Os tipos primitivos da linguagem Java so

[A] boolean, byte, narrow, int, wide, fixed, double, char.

[B] boolean, byte, short, int, long, float, double, char.

[C] buffered, byte, double-byte, single, long, float, double,


char.
[D] logical, boolean, short, local, extended, float, double,
cast.
[E] boolean, byte, short, integral, partial, long, float, char.

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

38

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

[B] so tipos primitivos de dados: boolean, byte, short, char,


int, long, string, float e double.
[C] o tipo de dado int suporta apenas nmeros de - 32.768 a
32.767.

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

39

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

[B] so tipos primitivos de dados: boolean, byte, short, char,


int, long, string, float e double.
[C] o tipo de dado int suporta apenas nmeros de - 32.768 a
32.767 -2.147.483.648 a 2.147.483.647.

O tipo de dado short suporta apenas nmeros de de - 32.768 a


32.767.

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

40

Questes de concursos
[CESPE 2009 DETRAN/DF Cargo 1] Com relao programao
Java, julgue o prximo item.

[76] Por meio do tipo de dados float, possvel representar


nmeros em notao de ponto flutuante normalizada em
preciso simples de 32 bits.

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

41

Questes de concursos
[CESPE 2009 DETRAN/DF Cargo 1] Com relao programao
Java, julgue o prximo item.

[76] Por meio do tipo de dados float, possvel representar


nmeros em notao de ponto flutuante normalizada em
preciso simples de 32 bits.

Gabarito: CERTO.

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

42

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

[92] Entre os tipos de dados primitivos suportados pela


linguagem Java, est o tipo char, o qual ocupa um espao de
memria de 8 bits.

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

43

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

[92] Entre os tipos de dados primitivos suportados pela


linguagem Java, est o tipo char, o qual ocupa um espao de
memria de 8 16 bits.

Gabarito: ERRADO.

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

44

Valores literais

So valores representveis literalmente

Podem ser:

Unidimensionais

Nmeros: 1, 3.14, 1.6e-23

Valores booleanos: true e false

Caracteres individuais: 'a', '\u0041', '\n'

Compostos

Sequncias de caracteres (String): Kal-El Gildo Arajo

Arrays de:

Nmeros: {1, 2, 3}

Booleanos: {true, false}


String: {J, U, G}

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

45

Valores literais

Tipos de literais:

Inteiro

Ponto flutuante

Booleano

Caractere

String

Null

um tipo (ou valor) especial que indica que uma referncia no


est apontando para nenhum objeto

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

46

Literais inteiros

Decimal
Decimal
int
int decimal
decimal =
= 26;
26;

Hexadecimal
Hexadecimal
int
int hexadecimal
hexadecimal =
= 0x1a;
0x1a;

Octal
Octal
int
int octal
octal =
= 032;
032;

Binrio
Binrio
int
int binario
binario =
= 0b11010;
0b11010;

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

47

Literais inteiros

Podem ser expressos em:

Decimal

Exemplo:

int decimalInt = 26;

long decimalLong = 26L;

Hexadecimal

Possuem os prefixos 0x ou 0X, seguidos do nmero em


hexadecimal

As letras usadas nos nmeros hexadecimais (de A a F) podem ser


maisculas ou minsculas

Exemplos:

int a = 0x1a;

int b = 0XCAFE;

int c = 0xFACEB00C;
long d = 0xC0B0L;

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

48

Literais inteiros

Podem ser expressos em:

Octal

Possuem o prefixo 0, seguidos do nmero em octal

Exemplos:

int seis = 06;

int sete = 07;

int oito = 010;

long nove = 011L;

Binrio

Possuem os prefixos 0b ou 0B, seguido do nmero em binrio

Exemplos:

int a = 0b11010;

long b = 0B10101L;

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

49

Literais inteiros

So dos tipos:

int

Quando no usado a letra ao final de um literal inteiro, o padro


utilizado int

long

Possuem os prefixos:

l (L minsculo)

Se o literal for do tipo long, o tipo da varivel deve ser do tipo long

long decimalLong = 26L;

recomendvel utilizar o L maisculo, pois o minsculo parecido


com o nmero 1 na fonte de letra utilizada por vrias IDE's:

1 (nmero)
l (L minsculo)

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

50

Literais inteiros
Expresso em
Decimal

Identificao
-

Hexadecimal
Octal
Binrio

Prefixo

Tipo

Sufixo

int

0x ou 0X

long

l ou L

Tipo
Padro
int

0
0b ou 0B

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

51

Literais de ponto flutuante


Decimal
Decimal
double
double decimal
decimal =
= 0.125;
0.125;

Hexadecimal
Hexadecimal
double
double hexadecimal
hexadecimal =
= 0x1.0p-3;
0x1.0p-3;

Notao
Notao cientfica
cientfica
double
double notacaoCientifica
notacaoCientifica =
= 1.25e-1;
1.25e-1;

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

52

Literais de ponto flutuante

Podem ser expressos em:

Decimal

Exemplos:

float decimalFloat = 0.125f;

double decimalDouble = 0.125;

Hexadecimal

Possuem:

Prefixo 0x ou 0x

Valor da mantissa em hexadecimal


Expoente denotado por p ou P

Valor do expoente em decimal


Base do expoente 2

Exemplos:

float hexadecimalFloat = 0x1.0p-3f;

double hexadecimalDouble = 0x1.0p-3d;

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

53

Literais de ponto flutuante

Podem ser expressos em:

Notao cientfica

Possuem:

Valor da mantissa em decimal

Expoente denotado por e ou E

Valor do expoente em decimal


Base do expoente 10

Exemplos:

float notacaoCientificaF = 1.25e-1f;

double notacaoCientificaD = 1.25e-1;

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

54

Literais de ponto flutuante

So dos tipos:

float

Possuem o sufixo:

F
f

double

Opcionalmente, possuem o sufixo:

D
d

Quando no usada a letra ao final de uma literal de ponto


flutuante, o padro utilizado double

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

55

Literais de ponto flutuante


Expresso em
Decimal

Hexadecimal

Notao
cientfica

Identificao

Tipo

Sufixo

float

f ou F

Prefixo

0x ou 0x

double

d ou D

Mantissa

Em hexadecimal

Expoente

Valor em decimal
2

Prefixo

Mantissa

Em decimal

Base do expoente

double

Denotado por p ou P

Base do expoente

Expoente

Tipo
Padro

Denotado por e ou E
Valor em decimal
10

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

56

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

57

Hora de praticar

constelacao01.parte03

Exemplo02_LiteraisInteiros

Exemplo03_LiteraisPontoFlutuante

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

58

Literais booleanos

So representados por dois valores:

true

boolean rogerioEhBunitin = true;

false

boolean rogerioEhFeinDemais = false;

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

59

Literais de caracteres

Podem ser expressos em:

Caractere

Sequncia de escape

char a = 'a';
char quebraLinha = '\n';

Devem vir entre aspas simples

No importando como esto expressos

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

60

Literais de caracteres

Podemos atribuir a uma varivel do tipo char, valores:

Literais do tipo int

De 0

A 65.536

Unicode

De \u0000

A \uFFFF

Exemplos do caractere 'a' em:

char aChar = 97;

char aUnicode = '\u0061';

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

61

Literais de caracteres
Sequncia de escape

Representa

Valor Unicode

\b

Backspace

\u0008

\t

Tab

\u0009

\n

Quebra de linha

\u000A

\r

Retorno de carro

\u000D

\"

Aspas duplas

\u0022

\'

Aspas simples

\u0027

\\

Barra invertida

\u005C

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

62

Literais de String

Consistem em zero ou mais caracteres

Devem vir entre aspas duplas

Diferente dos literais de caracteres que devem vir entre aspas


simples

a diferente de 'a'

O primeiro representa um conjunto unitrio de caractere

O segundo representa apenas um elemento de caractere

No podemos atribuir:

Um literal de String para uma varivel do tipo char

char aChar = a; // O compilador acusar um erro.

Um literal de caractere para uma varivel do tipo String

String aString = 'a'; // O compilador acusar um erro.


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

63

Literais de String

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

64

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

65

Hora de praticar

constelacao01.parte03

Exemplo04_LiteraisCaracteres

Exemplo05_LitreaisString

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

66

Questes de concursos
[CESPE 2009 TCE/AC Cargo 10 Questo 79] Acerca da
linguagem de programao Java, assinale a opo correta.

[C] Literais so utilizados para definir tipos derivados ou


certos tipos complexos formados por componentes diferentes
(strings e vetores).
[D] Tipos representam um valor, uma coleo de valores ou
coleo de outros tipos. Os tipos bsicos, ou primitivos,
representam unidades divisveis de informao de tamanho
varivel.
[E] Literais so valores representveis literalmente, como os
nmeros, os valores booleanos, os caracteres individuais, as
sequncias de caracteres, os vetores de nmeros, de
booleanos ou de strings. Nmeros e valores booleanos so
compostos e multidimensionais.
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

67

Questes de concursos
[CESPE 2009 TCE/AC Cargo 10 Questo 79] Acerca da
linguagem de programao Java, assinale a opo correta.

[C] Literais so utilizados para definir tipos derivados


primitivos ou certos tipos complexos formados por
componentes diferentes iguais (strings e vetores).
[D] Tipos representam um valor, uma coleo de valores ou
coleo de outros tipos. Os tipos bsicos, ou primitivos,
representam unidades indivisveis de informao de tamanho
varivel fixo.
[E] Literais so valores representveis literalmente, como os
nmeros, os valores booleanos, os caracteres individuais, as
sequncias de caracteres, os vetores de nmeros, de
booleanos ou de strings. Nmeros e valores booleanos so
compostos e multidimensionais unidimensionais.
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

68

Converses de tipos primitivos

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

69

Converses de tipos primitivos

Java converter um tipo de dados em outro sempre que isto


for apropriado
As converses ocorrero automaticamente quando houver
garantia de no haver perda de informao

Exemplos:

Tipos menores em tipos maiores

Tipos de menor preciso em tipos de maior preciso

Tipos inteiros em tipos de ponto flutuante

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

70

Converses de tipos primitivos


Tipo base

short

int

long

float

double

byte

ok

ok

ok

ok

ok

short

ok

ok

ok

ok

char

ok

ok

ok

ok

ok

ok

ok

ok

ok

int
long
float

ok

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

71

Converses de tipos primitivos

byte
byte
11 byte
byte

short
short
22 bytes
bytes

int
int
44 bytes
bytes

long
long
88 bytes
bytes

boolean
boolean
11 bit?
bit?

char
char
22 bytes
bytes

float
float
44 bytes
bytes

double
double
88 bytes
bytes

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

72

Converses de tipos primitivos

Converses que podem ocorrer perda de preciso:

De int para:

float

De long para:

float

double

Por exemplo, o valor inteiro 123456789 possui mais dgitos


do que um tipo float pode representar
O valor resultante da converso tem a magnitude correta

Porm pode perder um pouco de preciso

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

73

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

74

Hora de praticar

constelacao01.parte03

Exemplo06_ConversoesTiposPrimitivos

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

75

Casting de tipos primitivos

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

76

Casting de tipos primitivos

So converses de um tipo mais preciso para um tipo menos


preciso

Nessas converses, h a indicao explcita do tipo alvo

Podem gerar perda de informaes


tipoMenosPreciso var = (tipoMenosPreciso)
valorTipoMaisPreciso;

Exemplos:

int inteiro = (int) 15.7; // H perda das casas decimais.

double duplo = 15.7;

inteiro = (int) duplo; // H perda das casas decimais.

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

77

Casting de tipos primitivos


Tipo
base

byte

byte

short

char

int

long

float

double

Implcito

(char)

Implcito

Implcito

Implcito

Implcito

(char)

Implcito

Implcito

Implcito

Implcito

Implcito

Implcito

Implcito

Implcito

Implcito

Implcito

Implcito

Implcito

Implcito

short

(byte)

char

(byte)

(short)

int

(byte)

(short)

(char)

long

(byte)

(short)

(char)

(int)

float

(byte)

(short)

(char)

(int)

(long)

double

(byte)

(short)

(char)

(int)

(long)

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

Implcito
(float)

78

Casting de tipos primitivos

Importante:

Mesmo que o valor de uma varivel de um tipo mais preciso seja


um valor compatvel com o tipo menos preciso de outra varivel,
necessrio fazer o casting caso seja necessrio atribuir a
primeira varivel para a ltima

O compilador no tem como saber que valor estar dentro da


primeira varivel no momento da execuo

Exemplo:

double duplo = 15;

int inteiro = (int) duplo;

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

79

Casting de tipos primitivos

Importante:

Se houver um casting entre um nmero de um tipo mais preciso


para outro tipo menos preciso, porm esse nmero esteja fora
do intervalo do tipo menos preciso, o resultado ser um nmero
truncado com um valor diferente

Exemplos:

byte bite = (byte) 300; // O valor de bite 44.

byte bite2 = (byte) 128; // O valor de bite -128.


byte bite3 = (byte) 129; // O valor de bite -127.
byte bite4 = (byte) 255; // O valor de bite -1.

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

80

Casting de tipos primitivos


short

256

128

64

32

16

byte

300

44

128

-128

129

-127

255

-1

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

81

Casting de tipos primitivos

A linguagem Java utiliza a notao de complemento de dois

Exemplo1 (de 127 para -127):

127 na representao de 8 bits

Inverte-se os bits (~127)

01111111
10000000

Soma-se 1 aos bits invertidos

10000001

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

82

Casting de tipos primitivos

A linguagem Java utiliza a notao de complemento de dois

Exemplo (de -127 para 127):

-127 na representao de 8 bits

Subtrai-se 1 aos bits

10000000

Inverte-se os bits

10000001

01111111

O nmero 10000001 (2) em:

short, o valor seria 129

byte, o valor -127

O bit mais esquerda bit de sinal


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

83

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

84

Hora de praticar

constelacao01.parte03

Exemplo07_CastingTiposPrimitivos

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

85

Questes de concursos
[FCC 2012 TCE/SP Auxiliar de Fiscalizao Financeira II
Questo 51] Em um programa Java, considere a existncia de
uma varivel do tipo long chamada cod contendo o valor 1234.
Para passar o valor contido nessa varivel para uma varivel do
tipo byte chamada codNovo, deve-se fazer casting. Para isso,
utiliza-se a instruo: byte codNovo =

[A] Byte.valueOf(cod);

[B] (long) cod;

[C] Byte.pasreByte(cod);

[D] (byte) cod;

[E] (cast) cod;

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

86

Questes de concursos
[FCC 2012 TCE/SP Auxiliar de Fiscalizao Financeira II
Questo 51] Em um programa Java, considere a existncia de
uma varivel do tipo long chamada cod contendo o valor 1234.
Para passar o valor contido nessa varivel para uma varivel do
tipo byte chamada codNovo, deve-se fazer casting. Para isso,
utiliza-se a instruo: byte codNovo =

[A] Byte.valueOf(cod);

[B] (long) cod;

[C] Byte.pasreByte(cod);

[D] (byte) cod;

[E] (cast) cod;

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

87

Respostas dos desafios

[RGA] O que uma linguagem de tipagem esttica? E uma


fortemente tipada?

Linguagem de tipagem esttica uma linguagem onde o tipo de


cada varivel deve ser conhecido em tempo de compilao
Linguagem fortemente tipada uma linguagem onde h a
exigncia de que os valores armazenados em uma varivel sejam
compatveis com o tipo dela

[RGA] Qual o conceito resultante da juno de tipagem


esttica e fortemente tipada?

Tipagem estaticamente forte

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

88

Respostas dos desafios

[RGA] Quantos e quais so os tipos primitivos em Java?

So 8:

BSIL

byte

short
int

long

BCFD

boolean
char

float

double

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

89

Respostas dos desafios

[RGA] Qual o intervalo dos tipos do grupo BSIL?

BSIL 1329

byte: -128 a 127

short: -32.768 a 32.767

int: -2 bilhes e alguma coisa a 2 bilhes e alguma coisa

long: -9 l na caixa prego a 9 l pra baixo da gua!

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

90

Respostas dos desafios

[RGA] Quantos bits representam cada tipo primitivo?

BSIL:

byte: 1 byte ou 8 bits

short: 2 bytes ou 16 bits

int: 4 bytes ou 32 bits

long: 8 bytes ou 64 bits

BCFD:

boolean: 1 bit, normalmente

char: 2 bytes ou 16 bits

float: 4 bytes ou 32 bits

double: 8 bytes ou 64 bits

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

91

Respostas dos desafios

[RGA] O tipo char no um tipo numrico integral.

[RGA] Apenas as variveis locais de classe e de instncias so


inicializadas automaticamente.

Gabarito: ERRADO.

Gabarito: ERRADO.

[RGA] O que so valores literais? E como eles podem ser?

So valores representveis literalmente

Podem ser:

Unidimensionais

Compostos

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

92

Respostas dos desafios

[RGA] Quais so os tipos de literais?

Inteiro

Ponto flutuante

Booleano

Caractere

String

Null

[RGA] Como os literais de inteiros so expressos?

Decimal

Hexadecimal

Octal

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

93

Respostas dos desafios

[RGA] Quais so os tipos dos literais inteiros e qual o tipo


padro?

int (padro)

long

[RGA] Como os literais de ponto flutuante so expressos?

Decimal

Hexadecimal

Notao cientfica

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

94

Respostas dos desafios

[RGA] Quais so os tipos dos literais de ponto flutuante e qual


o tipo padro?

float

double (padro)

[RGA] Como os literais de caracteres so expressos?

Caractere

Sequncia de escape

[RGA] Os literais de caracteres devem vir entre aspas duplas


simples.

Gabarito: ERRADO.

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

95

Respostas dos desafios

[RGA] Quais so os valores que tambm podemos atribuir s


variveis do tipo char?

Literais do tipo int

Unicode

[RGA] Em que consistem os literais de String?

Consistem em zero ou mais caracteres

[RGA] Literais de String devem vir entre aspas simples ou


duplas?

Duplas

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

96

Respostas dos desafios

[RGA] O literal a diferente do literal 'a'.

Gabarito: CERTO.

O primeiro representa um conjunto unitrio de caractere

O segundo representa apenas um elemento de caractere

[RGA] A seguinte expresso char aChar = a; no est


correta.

Gabarito: ERRADO.

[RGA] As converses de tipos primitivos ocorrero


automaticamente quando houver garantia de no haver perda
de preciso informao.

Gabarito: ERRADO.

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

97

Respostas dos desafios

[RGA] Quais so converses de tipos primitivos que podem


ocorrer perda de preciso?

De int para:

float

De long para:

float

double

[RGA] O que casting?

So converses de um tipo mais preciso para um tipo menos


preciso que podem gerar perda de informaes

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

98

Respostas dos desafios

[RGA] No casting, h a indicao explcita do tipo alvo.

Gabarito: CERTO.

tipoMenosPreciso var = (tipoMenosPreciso) valorTipoMaisPreciso;

[RGA] Se uma varivel do tipo byte receber o literal 300, sendo


feito casting, ela receber na verdade o valor equivalente a 44.

Gabarito: CERTO.

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

99

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

100

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

101

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

102

Você também pode gostar