More Related Content
More from Ludimila Monjardim Casagrande
More from Ludimila Monjardim Casagrande (18)
POO - 03 - Alocação de Memória em Java
- 1. Programação Orientada a Objetos
Alocação de Memória em Java
Criação de Objetos e Alocação de Memória
Ludimila Monjardim Casagrande
2012
- 2. Alocação de Memória em Java
Toda vez que uma variável é declarada um espaço
de memória é alocado para a mesma e, quando ela
é inicializada, nesse espaço é armazenado seu
valor:
int x; x ?
x = 0; x 0
Se o tipo da variável não for de um dos tipos
primitivos, então, ela é uma referência para um
objeto.
Alocação de Memória ©2012 Ludimila Monjardim Casagrande 2
- 3. Alocação de Memória em Java
Quando uma referência para um objeto é
declarada, um espaço de memória também é
alocado para a mesma:
Data d; d ?
Para fins didáticos, podemos considerar que
uma referência para um objeto é o endereço de
memória no qual o objeto está alocado.
A referência é o elemento que permite que um
determinado objeto seja acessado.
Alocação de Memória ©2012 Ludimila Monjardim Casagrande 3
- 4. Alocação de Memória em Java
Após definirmos uma classe, podemos criar
objetos a partir dela.
Os objetos quando criados são alocados na
memória RAM do computador.
Felizmente, todo o processo de alocação do
objeto na memória é gerenciado pela máquina
virtual Java (JVM).
Alocação de Memória ©2012 Ludimila Monjardim Casagrande 4
- 5. Alocação de Memória em Java
Quando um objeto é criado, pela chamada de new
<construtor>, os seguintes passos acontecem:
um espaço de memória é alocado para o objeto
criado e suas variáveis de instância são inicializadas
com seus valores default;
as inicializações explícitas programadas para as
variáveis de instância são realizadas;
o construtor chamado é executado;
o endereço de memória no qual o objeto está alocado
é retornado e atribuído para a variável que referencia
o objeto.
Alocação de Memória ©2012 Ludimila Monjardim Casagrande 5
- 6. Exemplo
public class Principal{
public static void main (String[ ] args) {
public class Data { Data hoje = new Data(12, 11, 2012);
private int dia = 1;
}
private int mes = 1;
private int ano = 1800; }
public Data (int d, int m, int a){
if((d >= 1 && d <= 31) &&
(m >= 1 && m <= 12) &&
(a >= 1800 && a <= 2100)){
this.dia = d;
this.mes = m;
this.ano = a;
} else {
System.out.println("Erro: Data inválida.");
}
}
}
Alocação de Memória ©2012 Ludimila Monjardim Casagrande 6
- 7. Alocação de Memória em Java
Passo 1:
A declaração aloca espaço para a referência e a
chamada do construtor aloca espaço para o
objeto criado:
Data hoje = new Data(12, 11, 2012);
hoje ?
dia 0
As variáveis de instância são inicializadas
mes 0
com os valores default
ano 0
Alocação de Memória ©2012 Ludimila Monjardim Casagrande 7
- 8. Alocação de Memória em Java
Passo 2:
As inicializações explícitas das variáveis de
instância são executadas:
Data hoje = new Data(12, 11, 2012);
hoje ? public class Data {
private int dia = 1;
dia 1 private int mes = 1;
mes 1 private int ano = 1800;
ano 1800 ...
}
Alocação de Memória ©2012 Ludimila Monjardim Casagrande 8
- 9. Alocação de Memória em Java
Passo 3:
O construtor chamado é executado:
Data hoje = new Data(12, 11, 2012);
public Data (int d, int m, int a){
hoje ?
if((d >= 1 && d <= 31) &&
(m >= 1 && m <= 12) &&
dia 12
(a >= 1800 && a <= 2100)){
mes 11
ano this.dia = d;
2012
this.mes = m;
this.ano = a;
} else {
System.out.println("Erro: Data inválida.");
}
}
Alocação de Memória ©2012 Ludimila Monjardim Casagrande 9
- 10. Alocação de Memória em Java
Passo 4:
O endereço de memória no qual o objeto está
alocado é retornado e atribuído para a variável
que referencia o objeto:
Data hoje = new Data(12, 11, 2012);
hoje 0x0123
dia 12
mes 11
ano 2012
Alocação de Memória ©2012 Ludimila Monjardim Casagrande 10
- 11. Teste
Após Data b = a;
public class Teste {
x 8
public static void main(String[] args) { y 7
a 0x0123
int x = 7; 21 10 2006
b 0x0123
int y = x;
x = 8;
Data a = new Data(21, 10, 2006);
Data b = a; Após a = new Data(28, 10,2006);
x 8
a = new Data(28, 10, 2006); 7
y
} a 0x0456 28 10 2006
} b 0x0123
21 10 2006
Quais são os resultados finais?
Alocação de Memória ©2012 Ludimila Monjardim Casagrande 11
- 12. Atividade Prática
Ler o Capítulo 3 da apostila Orientação a
Objetos em Java da K19 Treinamentos e fazer
os exercícios de fixação.
Alocação de Memória ©2012 Ludimila Monjardim Casagrande 12