Transferencia de Datos en Java
Desliza para mostrar el menú
Cómo se transmite la información en Java
Como se explicó en el curso anterior, existen dos tipos de memoria: stack y heap. A continuación, se analiza cómo se almacenan los datos en estas dos áreas de memoria:
Main.java
123456789package com.example; public class Main { public static void main(String[] args) { String number = new String("170"); String word = new String("word"); int poolNumber = -4; } }
Se han creado 3 variables diferentes. A continuación, se muestra un diagrama que ilustra cómo y dónde se almacenarán en la memoria:
Analicemos lo que observaste en el diagrama:
- Vemos campos
Stringen la memoria stack que son enlaces a valores en la memoria heap. De esta manera, no accedemos directamente a la memoria heap cada vez. En su lugar, accedemos inicialmente al enlace en la memoria stack, lo cual es más rápido que acceder a la memoria heap. Ya te has encontrado con enlaces a valores al aprender sobre el tema de la String Pool; - Puedes ver que
intno se almacena en la memoria heap; su valor se almacena directamente en la memoria stack. Esto aplica para todos los tipos de datos primitivos (byte,short,int,long,float,doubleyboolean). Por lo tanto, los tipos de datos primitivos se pasan en Java por valor. Sin embargo,Stringno es un tipo de dato primitivo, por lo que su valor se almacena en la memoria heap; - Se crea un nuevo objeto en la memoria heap para cada nuevo enlace. Sin embargo, si dos variables del mismo tipo tienen el mismo valor, ambas referenciarán el mismo objeto en la memoria heap;
- El Integer Pool es un área en la memoria stack donde todos los valores enteros en el rango de
-128a127están enlazados. Esta optimización se realiza para mejorar el rendimiento en el manejo de números en Java, ya que los números en este rango se utilizan comúnmente. Recuerda que la memoria stack opera más rápido que la memoria heap, por lo que obtenemos respuestas más rápidas gracias al Integer Pool; - El String Pool es un área en la memoria heap donde se almacenan valores de cadenas idénticas.
Conclusión
En Java, todo se pasa por valor. Para los objetos, se pasa una copia de la referencia, pero el objeto real en el heap permanece sin cambios (si es inmutable, como String).
Las variables en la stack almacenan referencias a objetos ubicados en el heap. Esto aplica para todos los tipos de referencia, incluyendo String.
1. ¿Qué es un Integer Pool en Java?
2. ¿Cómo se transfieren los datos en Java, por referencia o por valor?
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla