1. Cómo se organiza la memoria

Cada computadora tiene memoria interna . ¿Qué es? ¿Qué propiedades tiene? Y, lo más importante, ¿en qué nos beneficia?

Cada programa (incluidos los programas escritos en Java) se carga en la memoria principal antes de ejecutarse. La memoria principal contiene el código del programa (que es ejecutado por el procesador), así como los datos del programa (es decir, datos que el propio programa pone en la memoria).

¿Qué es la memoria y cómo es?

Una hoja de cálculo de Excel consta de celdas . Cada celda tiene su propio identificador único ( A1, A2, ... B1, B2). Si conoce el identificador de una celda , siempre puede escribir algún valor en él u obtener cualquier valor que esté almacenado allí. La memoria de la computadora está organizada de una manera muy similar.

El programa y los datos del programa se almacenan en la memoria cuando el programa se está ejecutando. Toda la memoria de la computadora está compuesta por pequeñas celdas llamadas bytes . Cada celda tiene un identificador único, o número, asociado a ella: 0, 1, 2, 3, ...; (la numeración empieza desde cero). Si conocemos el número de una celda , podemos guardar datos en ella. O obtener datos de él. Algunas celdas almacenan el código del programa, es decir, el conjunto de comandos para el procesador. Otros almacenan los datos utilizados por el programa. El número de la celda también se llama la dirección de la celda .

El procesador sabe cómo ejecutar comandos que se han cargado en la memoria. Casi todos los comandos del procesador son algo así como tomar datos de algunas celdas , hacer algo con ellos y luego enviar el resultado a otras celdas .

Combinamos cientos de comandos simples para obtener comandos complejos y útiles.

Cuando se declara una variable en el código, se le asigna una parte de la memoria que aún no se está utilizando. Suele ser unos pocos bytes. Declarar una variable requiere que indiques el tipo de información que el programa almacenará en ella: números, texto u otros datos. Después de todo, si no sabe el tipo de información que se almacenará, entonces no está claro qué tamaño de bloque de memoria debe asignarse para la variable.

En los albores de la era de las computadoras, los programas trabajaban directamente con direcciones de memoria, pero luego, para conveniencia de los programadores, las celdas comenzaron a recibir nombres. Un nombre de variable único es sobre todo para la comodidad de los programadores, ya que el programa maneja bien las direcciones de memoria simples.


2. Variables en memoria

En total, Java tiene 4 tipos de datos para almacenar números enteros. Estos son byte, shorty int.long

Tipo Tamaño en bytes Origen del nombre del tipo
byte 1 byte es una reelaboración deliberada de mordida para evitar confusiones con bit
short 2 Abreviatura de entero corto
int 4 Abreviatura de entero
long 8 Abreviatura de entero largo

Además, Java tiene 2 tipos de números reales: float y double:

Tipo Tamaño en bytes Origen del nombre del tipo
float 4 Abreviatura de número de punto flotante
double 8 Abreviatura de doble flotador

Cada vez que la ejecución del programa llega a un comando para crear una variable, se le asigna un pequeño bloque de memoria (el tamaño depende del tipo de variable).

La dirección de una variable es la dirección de la primera celda del bloque de memoria asignado.

Los programas Java no pueden acceder a la memoria directamente. Todo el trabajo con la memoria ocurre solo a través de la máquina virtual Java.


3. El Stringtipo en la memoria

El Stringtipo puede almacenar grandes cantidades de datos, lo que implica que no es solo un tipo de datos, sino una clase completa.

El Stringobjeto se coloca en un bloque de memoria asignado que almacena la dirección de otro bloque de memoria en el que se almacena el texto.

La int avariable ocupa 4bytes y almacena el valor 1.

La int bvariable ocupa 4bytes y almacena el valor 10,555. Usamos una coma como separador de miles. Y usamos un punto como separador decimal.

La double dvariable ocupa 8bytes y almacena el valor 13.001.

La String strvariable ocupa 4bytes y almacena el valor G13, que es la dirección de la primera celda del bloque de memoria que contiene el texto.

Un texto del String objectse almacena en un bloque de memoria separado. La dirección de su primera celda se almacena en la strvariable.


4. Por qué la numeración empieza por cero en programación

La gente suele preguntarse por qué los programadores casi siempre empiezan a contar desde cero. Bueno, el hecho es que hay muchas situaciones en las que es más conveniente contar desde cero (por supuesto, también hay situaciones en las que es más conveniente contar desde 1).

El ejemplo más simple de es el direccionamiento de memoria. Si a su variable se le han asignado 4bytes de memoria y sabe que esa Xes la dirección del primer byte, ¿cuáles son las direcciones de cada byte? , , , . Tan simple como eso, tenemos un grupo de bytes a los que se puede acceder con los índices , , , .X+0X+1X+2X+30123

Cuando pensamos en una dirección relativa dentro de un bloque de datos, la indexación desde cero es lo que tiene sentido. Esta es la principal razón para contar desde cero .