quinta-feira, 28 de fevereiro de 2008

[11] Tipos de variáveis: tipos primitivos


Vamos aprender um pouco mais sobre os tipos de variáveis existentes no Java: tipos primitivos e tipos de referência. Porém, neste Post daremos ênfase aos tipos primitivos.

Variáveis de tipos primitivos

Uma vez que uma variável é definida como um tipo primitivo, seu tipo não pode ser alterado. Isso implica dizer que ao declarar uma variável de tipo primitivo como a variável "velocidade" abaixo como tipo int, ela não pode, dentro do mesmo escopo, ser redefinida para o tipo float, por exemplo:

int velocidade;
float velocidade;

Cada variável de um tipo primitivo armazena apenas um valor por vez do seu tipo. Os tipos primitivos da linguagem Java são: char, byte, short, int, long, float, double e boolean. Veremos a seguir características e um exemplo de uso para cada tipo primitivo:

_______________________________________________________

char

O tipo char é utilizado para armazenar em uma variável caracteres individuais, tais como: 'A', 'G' ou 'U'. Cada caracter a ser atribuído a uma variável do tipo char deve ser escrito entre aspas simples:

char letra = 'A';
System.out.println("LETRA INICIAL: " + letra);
letra = 'E';
System.out.println("NOVA LETRA: " + letra);


Certamente os valores a serem exibidos após a execução do código acima são:

LETRA INICIAL: A
NOVA LETRA: E

Uma variável do tipo char também pode receber entre aspas simples um valor Unicode:

char caracterUnicode = '\u0041';
System.out.println("Caracter unicode: " + caracterUnicode);


E será exibido na tela:

Caracter unicode: A

Pois o código 0041 na tabela unicode pertence ao caracter 'A', assim como o código 0030 pertence ao número zero e o código 0032 pertence ao número 2.

_______________________________________________________

byte

O tipo byte armazena um valor inteiro de -128 a 127, inclusive:

byte pequenoNumero = 30;
byte outroNumero = 50;
byte soma = pequenoNumero + outroNumero;
System.out.println("Soma: " + soma);

O valor exibido no console é:

Soma: 80

_______________________________________________________

short

O tipo short armazena um valor de -32.768 a 32.767, inclusive:

short valor1 = -1000;
short valor2 = 20600;
short valor3 = valor2 - valor1;
System.out.println("Valor 3: " + valor3);

Saída:

Valor 3: 19600

_______________________________________________________

int

O tipo primitivo int armazena um valor inteiro entre -2.147.483.648 e 2.147.483.647, inclusive:

int idade = 0;
int anoNascimento = 2009;
int saldoNegativo = -3200;
_______________________________________________________

long

O tipo primitivo long armazena um valor inteiro entre -9.223.372.036.854.775.808 e 9.223.372.036.854.775.807. Para deixar explícito que um valor deve ser interpretado como long, é comum que se digite a letra L, minúscula ou maiúscula:

long numeroGrande = 1300333030;
long outroNumeroGrande = 1300333030l;
long maisUmNumeroGrande = 1300333030L;

Todas as variáveis declaradas acima têm o mesmo valor e são do tipo long, porém note que as variáveis "outroNumeroGrande" e "maisUmNumeroGrande" possuem as letras l e L, respectivamente, ao final dos valores atribuídos. O uso da letra L é útil apenas para diferenciar que o valor em questão será armazenado em uma variável do tipo long, e não int, por exemplo. O valor não sofre quaisquer alterações após o uso da letra.

_______________________________________________________

float

Uma variável do tipo primitivo float armazena um número real de 32 bits segundo o padrão IEEE 754. Para deixar explícito que o valor em questão é do tipo float, usa-se a letra F ao final do valor.


float altura = 1.87f;
float peso = 71.5F;
float juros = 1.5;

O valor não sofre quaisquer alterações após o uso da letra.

_______________________________________________________

double

O tipo de dado double é ponto-flutuante de dupla precisão de 64 bits segundo o padrão IEEE 754:

double superValor = 121313.4;
System.out.println("Super valor: " + superValor);

O valor exibido é:

Super valor: 121313.4

_______________________________________________________

boolean

O tipo boolean - ou booleano - só pode receber dois tipos de valores: true ou false:

boolean isOpened = true;
System.out.println("IS OPENED (antes): "+ isOpened);
boolean flag = false;
isOpened = false;
System.out.println("IS OPENED (depois): "+ isOpened);
System.out.println("flag: "+ flag);
A saída exibida será:

IS OPENED (antes): true
IS OPENED (depois): false
flag: false

_______________________________________________________

Cuidado ao tentar atribuir um valor maior do que um tipo de variável pode suportar, como por exemplo:

byte valorPequeno = 12340;

int valorNaoLong = 2980928320213L;

12340 é considerado como valor inteiro, desde já não é possível atribuir tal valor a uma variável do tipo byte, pois o tipo byte suporta valores inteiros entre
-128 a 127, apenas.

E caso o valor
2980928320213 inão seja seguido pela letra L, o compilador tentará, por padrão, entendê-lo como um valor do tipo int, e como os valores int devem estar entre -2147483648 e 2147483647, o valor 2980928320213 excede esse limite, a compilação falhará e dará a seguinte mensagem:

The literal 2980928320213 of type int is out of range


Cuidado também ao tentar atribuir valores que são incompatíveis ao tipo em questão:

char letra = 1243f;
int number = 1243f;

Estas atribuições causam erro de compilação e geram as seguintes mensagens:

Type mismatch: cannot convert from float to char
Type mismatch: cannot convert from float to int



Os indicadores de tipos primitivos são palavras-chave, desde então você não pode criar identificadores com o mesmo nome que eles. Como, por exemplo, criar uma variável chamada "int" ou "float". Palavras-chave são palavras reservadas.

Vale também ressaltar que os tipos primitivos também podem ser chamados de tipos predefinidos.






Bem, neste Post ficamos por aqui. Na próxima postagem aprenderemos sobre os tipos de referência do Java. Um abraço e até logo.

1 comentários:

Polly disse...

André, parabéns pela organização. Java Imediato e descomplicado. O blog está muito bom!
Pode mandar beijo??