Você está na página 1de 4

Tipos primitivos de dados

*Traduo de:
(http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html)

A linguagem de programao Java estaticamente tipada, o que significa que todas as variveis devem
ser declaradas antes de poderem ser utilizadas. Trata-se de declarar o tipo da varivel e o nome, como
voc pode ver:
int engrenagem = 1;
Desta maneira, voc est dizendo que seu programa possui uma varivel chamada "engrenagem",
contendo dados numricos, sendo seu valor inicial "1". Os tipos de dados determinam os valores que
uma varivel possa conter, alm das operaes que podem ser executadas nela. Alm de int, a
linguagem de programao Java suporta sete outros tipos primitivos de dados. Um tipo primitivo prdefinido pela linguagem e identificado por uma palavra reservada. Os valores primitivos no
compartilham estado com outros valores primitivos. Os oito tipos primitivos de dados suportados pela
linguagem de programao Java so:

byte: O tipo de dados byte possui 8-bits. Tem um valor mnimo de -128 e um valor mximo de
127 (inclusive). O tipo de dados byte pode ser til para otimizar a utilizao de memria em
matrizes de grandes dimenses, em que a poupana de memria realmente importa.
short: O tipo de dados short um nmero inteiro de 16-bits. Tem um valor mnimo de -32.768 e
um valor mximo de 32.767 (inclusive). Tal como acontece com byte, as mesmas diretrizes se
aplicam: voc pode usar um short para economizar memria em grandes conjuntos, em
situaes em que as economias de memria realmente importam.
int: O tipo de dados int um inteiro de 32 bits. Tem um valor mnimo de -2.147.483.648 e um
valor mximo de 2.147.483.647 (inclusive). Para valores inteiros, este tipo de dados
geralmente a opo padro, a menos que haja uma razo (como citado anteriormente) para
escolher outro tipo. Este tipo de dados provavelmente ser grande o suficiente para os nmeros
que seu programa ir usar, mas se voc precisar de uma ampla gama de valores, use long.
long: O tipo de dados long possui 64 bits. Tem um valor mnimo de -9.223.372.036.854.775.808
e um valor mximo de 9.223.372.036.854.775.807 (inclusive). Utilize este tipo de dados quando
voc precisa de um intervalo de valores mais amplos do que aqueles fornecidos pelo int.
float: O tipo de dados float representa valores numricos com ponto flutuante, com preciso de
32 bits. Este tipo segue a IEEE 754. Sua gama de valores est alm do escopo desta discusso,
mas especificado na linguagem Java. Tal como acontece com as recomendaes para byte e
short, utilize um float (em vez de double) quando voc necessitar economizar memria. Este
tipo de dados nunca deve ser usado para valores precisos, como moeda.
double: O tipo de dados double possui preciso de 64 bits, seguindo a IEEE 754. Para valores
decimais, este tipo de dados geralmente a opo padro. Como mencionado acima, este tipo
de dados nunca deve ser usado para valores precisos, tais como moeda.

boolean: O tipo de dados boolean possui apenas dois valores possveis: verdadeiro e falso.
Utilize este tipo de dados para flags simples que verificam as condies verdadeiro / falso. Este
tipo de dados representa um bit de informao, mas o seu "tamanho" no algo que est
definido com preciso.
char: O tipo de dados char um caracter nico, com tamanho de 16-bit, permitindo Unicode.
Tem um valor mnimo de '\ u0000' (ou 0) e um valor mximo de '\ uFFFF' (ou 65.535 inclusive).

Alm dos oito tipos primitivos de dados listados acima, a linguagem de programao Java tambm
fornece suporte especial para cadeias de caracteres atravs do tipo String. Uma sequncia de caracteres
entre aspas duplas ir criar automaticamente um novo objeto String, por exemplo:
String s = "isto uma string";
Objetos do tipo String so imutveis, o que significa que uma vez criados, seus valores no podem ser
alterados. O tipo String no tecnicamente um tipo de dados primitivo, mas considerando o apoio
especial que lhe dado pela linguagem, voc provavelmente tender a pensar nele como tal.

Valores Padro
Nem sempre necessrio atribuir um valor quando uma varivel declarada. Variveis que so
declaradas, mas no inicializadas, so definidas pelo compilador normalmente com 0 ou com nulo (null),
dependendo do tipo em questo. Por outro lado, este estilo de programao normalmente
considerado ruim.
A tabela a seguir resume os valores padro para os tipos de dados acima.
Tipo de Dado
byte
short
int
long
float
Double
String
Boolean
char

Valor Padro
0
0
0
0L
0.0f
0.0d
null
false
\u0000

As variveis locais so um pouco diferentes, o compilador nunca atribui um valor padro para uma
varivel local no inicializada. Se voc no puder inicializar a varivel local onde ela declarada,
certifique-se de atribuir um valor antes de tentar us-lo. Acessar uma varivel local no inicializada ir
resultar em um erro de tempo de compilao.

Literais
Tipos primitivos so tipos especiais de dados. Um literal a representao no cdigo fonte de um valor
fixo (esttico). Literais so representados diretamente em seu cdigo, sem a necessidade de
computao. Como mostrado abaixo, possvel atribuir um literal para uma varivel de um tipo
primitivo:
boolean result = true;
char capitalC = 'C';
byte b = 100;
short s = 10000;
int i = 100000;

Literais Inteiros
Um literal inteiro do tipo long, se ele termina com a letra L ou l, caso contrrio ele do tipo int.
recomendado que voc use a letra L maiscula, porque o l letra minscula difcil de distinguir quando
comparada com o dgito 1.
Valores dos tipos inteiros byte, short, int, e long podem ser criados a partir de literais inteiros. Valores
do tipo long, que ultrapassam a faixa de int, podem ser criados a partir de literais longos. Literais inteiros
podem ser expressos por estes sistemas numricos:

Decimal: Base 10, cujos dgitos so composto pelos nmeros 0 a 9. Este o sistema numrico
que voc usa todos os dias;
Hexadecimal: Base 16, cujos dgitos so composto pelos nmeros de 0 a 9 e as letras A at F;
Binrio: Base 2, cujos dgitos so composto dos nmeros 0 e 1 (voc pode criar literais binrios
em Java SE 7 e posteriores)

Para programao de propsito geral, o sistema decimal provavelmente seja o que voc mais ir utilizar.
No entanto, se voc precisa usar outro sistema numrico, o exemplo a seguir mostra a sintaxe correta. O
prefixo 0x indica hexadecimal e 0b indica binrio:

/ /
int
/ /
int
/ /
int

O nmero
decVal =
O nmero
hexVal =
O nmero
binVal =

26, em decimal
26;
26, em hexadecimal
0x1A;
26, em binrio
0b11010;

Literais com ponto flutuante


Um literal de ponto flutuante do tipo float se termina com a letra F ou f, caso contrrio, seu tipo
double que, opcionalmente, pode ser terminado com a letra D ou d.
Os tipos de ponto flutuante (float e double) tambm podem ser expressados usando E ou e (para a
notao cientfica), F ou f (32-bit flutuante literal) e D ou d (64-bit dupla literal, este o padro e, por
conveno, omitido).
double d1 = 123.4;
//Mesmo valor que d1, mas em notao cientfica
double d2 = 1.234e2;
float f1 = 123.4f;

Literais de caracteres e String


Literais dos tipos char e String podem conter qualquer caractere Unicode (UTF-16). Se o seu editor e
sistema de arquivos permitirem, voc pode usar esses caracteres diretamente em seu cdigo. Se no,
voc pode usar um "escape Unicode", tais como '\u0108' (capital C com circunflexo) ou "S\u00ED Se\
u00F1or" (S Seor em espanhol). Sempre use 'aspas simples' para literais char e "aspas duplas" para
literais String.
A linguagem de programao Java tambm suporta algumas sequncias de escape especiais para literais
char e String:

\ b (backspace);
\ t (tab);
\ n (nova linha);
\ f (form feed),
\ r (retorno de carro);
\ "(aspas duplas);
\ '(aspas simples);
\ \ (barra invertida).