Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Transferência de Dados em Java | Estrutura Profunda do Java
Java Avançado

bookTransferência de Dados em Java

Deslize para mostrar o menu

Como a Informação é Transmitida em Java

Você já sabe, pelo curso anterior, que existem dois tipos de memória - stack e heap. Vamos analisar como os dados são armazenados nessas duas áreas de memória:

Main.java

Main.java

copy
123456789
package com.example; public class Main { public static void main(String[] args) { String number = new String("170"); String word = new String("word"); int poolNumber = -4; } }

Foram criadas 3 variáveis diferentes. Abaixo está um diagrama que ilustra como e onde elas serão armazenadas na memória:

Vamos analisar o que foi observado no diagrama:

  • Observam-se campos String na memória de pilha que são links para valores na memória heap. Dessa forma, não acessamos a memória heap diretamente toda vez. Em vez disso, acessamos inicialmente o link na memória de pilha, o que é mais rápido do que acessar a memória heap. Você já encontrou links para valores ao aprender sobre o tópico String Pool;
  • Pode-se notar que int não é armazenado na memória heap; seu valor é armazenado diretamente na memória de pilha. Isso se aplica a todos os tipos de dados primitivos (byte, short, int, long, float, double e boolean). Assim, tipos de dados primitivos são passados em Java por valor. No entanto, String não é um tipo de dado primitivo, então seu valor é armazenado na memória heap;
  • Um novo objeto é criado na memória heap para cada novo link. No entanto, se duas variáveis do mesmo tipo tiverem o mesmo valor, elas referenciarão o mesmo objeto na memória heap;
  • O Integer Pool é uma área na memória de pilha onde todos os valores inteiros no intervalo de -128 a 127 são vinculados. Essa otimização é feita para melhorar o desempenho no tratamento de números em Java, já que números nesse intervalo são comumente utilizados. Lembre-se de que a memória de pilha opera mais rápido que a memória heap, então obtemos respostas mais rápidas graças ao Integer Pool;
  • O String Pool é uma área na memória heap onde valores de string idênticos são armazenados.

Conclusão

Em Java, tudo é passado por valor. Para objetos, uma cópia da referência é passada, mas o objeto real na heap permanece inalterado (se for imutável, como String).

Variáveis na pilha armazenam referências para objetos localizados na heap. Isso se aplica a todos os tipos de referência, incluindo String.

1. O que é um Integer Pool em Java?

2. Como os dados são passados em Java, por referência ou por valor?

question mark

O que é um Integer Pool em Java?

Selecione a resposta correta

question mark

Como os dados são passados em Java, por referência ou por valor?

Selecione a resposta correta

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 2

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Seção 1. Capítulo 2
some-alt