Estrutura de dados em Java - Ponteiros e Alocação de Memória

6.936 visualizações

Publicada em

Publicada em: Tecnologia
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
6.936
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1
Ações
Compartilhamentos
0
Downloads
127
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Estrutura de dados em Java - Ponteiros e Alocação de Memória

  1. 1. Ponteiros e Alocação Dinâmica de Memória Prof. Adriano Teixeira de Souza
  2. 2. As variáveis de um programa, em geral, podem ter dois tipos de conteúdo: • Valor: instâncias de um determinando tipoint contador = 5; char letra = „b‟; double nota = 8.53; tipo: int tipo: char tipo: double valor: 5 valor: „b‟ valor: 8.53 • Referência: indica outra variável na memória int notas[2] tipo: ref. p/ int[] valor: {8, 10} texto valor: “abc” tipo: ref. p/ string Prof. Adriano Teixeira de Souza
  3. 3. Atribuir uma variável de valor a outra apenas copiaseu conteúdo atual. Uma modificação em uma delasnão afeta a outra variável.Ponto p1, p2; p1 3 1 p2 x y x y...p1.x = 3;p1.y = 1; p1 3 1 3 1 p2... x y x yp2.x = p1.x; p1 5 1 3 1 p2p2.y = p1.y; x y x y...p1.x = 5; Prof. Adriano Teixeira de Souza
  4. 4. Atribuir uma referência faz com que ambas apontempara o mesmo objeto. Qualquer alteração afeta as duasvariáveis.Java: p1 3 1 p2 ... x yPonto p1, p2;... 3 1 p1 p2p1.x = 3; x yp1.y = 1;... p1 5 1 p2p2 = p1; x y...p1.x = 5; Prof. Adriano Teixeira de Souza
  5. 5. Em Java, todos os tipos primitivos são representadospor valores:char c; c = „a‟;int x, y; x = y = 3;Os tipos compostos (classes), por outro lado, utilizamreferências: s = “if672”;String s; p = new Ponto(3,1);Ponto p; p.x = x;Integer n; n = new Integer(3);Vector v; v = null; Prof. Adriano Teixeira de Souza
  6. 6. A memória só é requisitada no momento em que o objeto énecessário, evitando o desperdício. Parâmetros do construtorEm Java/C++: através do operador newJava: Ponto p = new Ponto(800,600);C++: Ponto *p = new Ponto(800,600); Prof. Adriano Teixeira de Souza
  7. 7. A memória é alocada para o novo objeto, e sua posiçãoarmazenada em uma referência (ponteiro): Memóriaint[] a; a bint[] b;... int[5]a = new int[5];b = new int[4];... int[4]a = b;Não há mais nenhum ponteiro para esta região. O que acontece com ela? Prof. Adriano Teixeira de Souza
  8. 8. Em C/C++, é preciso desalocar as variáveis antes deeliminar a última referência para ela.Em Java, isso não é necessário, pois o garbagecollector libera a memória automaticamente. Prof. Adriano Teixeira de Souza

×