Variáveis no JAVA
Autor: Lucas Menezes | Publicado: 2009-10-07T13:44:00-03:00

Bom, depois de algum tempo sem postar no Grupo Haw, cá estamos...Já tivemos introdução à orientação a objetos, formas normais e convenções de código. Então nada mais justo que falarmos das variáveis do JAVA. Conhecer o que são e como são tratadas pelo compilador.O que são variáveis? São nada mais que espaços, de tamanho definido, alocados na memória no qual pode se armazenar um “valor” que pode ou não variar (variáveis, sacou?) no decorrer do seu programa. Ou como diz no Use a cabeça, uma xícara de diversas formas e tamanhos, um container para se guardar algo dentro.Basicamente existem 2 tipos de variáveis no JAVA, as variáveis Primitivas, ou seja, que contêm valores básicos primitivos (int, short, long e etc..) e as variáveis de referência que guardam um endereço de memória para um objeto criado, ou seja, indicam através de um endereço de memória, onde está localizado o objeto.Para declarar variáveis dos tipos primitivos devemos informar o tipo seguido do nome, podendo ainda atribuir (ou não) um valor no momento da declaração. O tamanho do espaço de memória alocado (reservado!?) para cada variável é definido no momento em que o tipo é declarado.Ex.: int x = 1;  ou int x; A declaração de variáveis segue alguns padrões estabelecidos pelo JavaDoc como informado no post “Convenções de Código” e também não permite o uso de palavras reservadas do Java.Os tipos primitivos existentes no Java são:
      boolean      char      byte      short      int      long      float      double  
      true ou false      16 bits      8 bits      16 bits      32 bits      64 bits      32 bits      64 bits  
 Uma forma de lembrá-los é criando uma frase com as iniciais:B – C – B – S – I – L – F – D       Opa, espera aí... Está faltando algo nessa tabela de tipos primitivos, cadê o tipo String?Não, não está faltando String nenhuma, uma String não é um tipo primitivo, em Java uma String é um objeto, que merece TAMBÉM (sim, acredite) um post só sobre isso, mas agora vamos voltar aos primitivos.Aqui vai um exemplo do nosso co-piloto Gabriel para declarações:class Primitivo {                public static void main(String args[]){                               boolean flag = false;                               char character = 'X';                               char ascii = 65; // pode receber valores da tabela ASCII (65 = A)                               byte b = 10;                               short pequeno = 100;                               int contador = 0;                               long desciGoncalves = 100000L; //o long deve terminar com L                               float fatura = 100.9F; // o float deve terminar com F                               double media = 75.5;                                                              System.out.println(flag);                               System.out.println(character);                               System.out.println(ascii);                               System.out.println(b);                               System.out.println(pequeno);                               System.out.println(contador);                               System.out.println(desciGoncalves);                               System.out.println(fatura);                               System.out.println(media);                }}A saída será:falseXA101000100000100.975.5 Uma variável só pode receber valor de variáveis de tipos com tamanho menor que o tipo que ela foi declarada. Assim os valores sempre caberão. É isso que importa para o compilador, pois mesmo que você tenha um valor do tipo double que caiba dentro de um int ele não permitirá a atribuição, já que não conhece o valor que você vai inserir. Ele somente deixará se você informar que sabe o que está fazendo. Utilizando um “cast”, mas isso é assunto para mais adiante.A declaração de variáveis de referência basicamente é a mesma coisa. Declara-se o tipo do Objeto a referenciar e o nome da variável (não necessariamente precisa criar o objeto no momento da declaração). A diferença é que o tamanho do espaço alocado para uma variável de referência é sempre fixo, porque se trata de um endereço de memória que mostra como chegar ao objeto que se refere.Exemplex(!?)class DeclaraVariavelReferencia {                public static void main(String args[]){                               HotDog dogao;                               dogao = new HotDog();                }}A variável de referência serve para guardar um endereço de um determinado objeto e acessar seus métodos (post, uno más). Para acessar os métodos utilizamos o nome da referência + “.” + método. Exemplo:dogao.montarDog();                Uma variável de referência somente aponta para UM objeto e duas variáveis de referência podem apontar para o mesmo objeto.O Java possui restrições quanto a referenciar objetos iguais as do tipo primitivo. Por exemplo, uma variável referência do objeto Carro não poderá se referenciar a um objeto do tipo Caminhão. Somente fazendo o tal do “cast” como nas variáveis primitivas.Então, eu vou ficando por aqui... tentei explicar de cabeça (menos os valores que não lembrava) e caso tenha esquecido de algo peço que complementem nos comentários para que eu estude também...Valeu galera, Hasta la vista.Obs.: Não citei variáveis primitivas como variáveis de instância de tipo primitivo como em alguns livros para não confundir com as variáveis de referência.