Você está na página 1de 8

Tipos referência

 Em Java, classes são tipos referência;


 As variáveis cujo tipo são classes não devem ser entendidas como caixas, mas
sim “tentáculos” (ponteiros) para caixas;
 Supondo duas variáveis do tipo Product:

1) Product p1, p2;

 Essas variáveis na memória, vão estar alocadas em uma área de memória


chamada Stack;
 Stack é a área de memória que você declara no programa;
 Ao fazer conforme 1), as caixinhas ficam vazias;
 No entanto, quando fazemos:

p1 = new Product(“TV”, 900.00, 0);

 Vai ser alocado um objeto em uma outra área de memória chamada Heap;
 O Heap é uma área de memória, onde são alocados os objetos em tempo de
excução;
 Isso é o que chamamos de alocação dinâmica de memória;
 A variável p1 não vai guardar o objeto em si e sim o endereço de memória do
objeto alocado;
 Por isso, dizemos que variáveis do tipo classe são referências ou “tentáculos”
ou ponteiros;
 Dentro da variável contém o endereço que vai dizer ONDE está o objeto na
memória
 O que acontece quando eu faço p2 = p1 (p2 recebe p1)?
 p2 passa a apontar para onde p1 aponta;
 Tipos referência aceitam o valor “null” (nulo), que indica que a variável aponta
para ninguém;
 Fazendo p2 = null, temos:
Tipos valor
 E Java, tipos primitivos são tipos valor;
Tipos valor são caixas e não ponteiros

Double x, y;

x = 10;

y = x;

 y recebe uma cópia de x


Tipos primitivos e inicialização

 O compilador verifica se toda variável declarada foi ou não inicializada;


 É obrigatório colocar algum valor dentro da variável para impressão.
Valores padrão
Quando alocamos usando a palavra-chave new, qualquer tipo estruturado, seja
uma classe ou array, são atribuídos valores padrão aos seus elementos

Números: 0;
Boolean: false;
Char: caractere código 0;
Objeto: null

 Se fizermos:

Product p = new Product();

 Os atributos desse objeto serão iniciados com alguns valores padrão caso eu não
atribua nada para eles:

Você também pode gostar