1. Come è organizzata la memoria

Ogni computer ha una memoria interna . Che cos'è? Che proprietà ha? E, soprattutto, in che modo ci avvantaggia?

Ogni programma (compresi i programmi scritti in Java) viene caricato nella memoria principale prima di essere eseguito. La memoria principale contiene il codice del programma (che viene eseguito dal processore) ei dati del programma (ovvero i dati che il programma stesso mette in memoria).

Cos'è la memoria e com'è?

Un foglio di calcolo Exсel è composto da celle . Ogni cella ha il proprio identificatore univoco ( A1, A2, ... B1, B2). Se conosci l' identificatore di una cella , puoi sempre scriverci un valore o ottenere qualunque valore sia memorizzato lì. La memoria del computer è organizzata in modo molto simile.

Il programma ei dati del programma vengono archiviati in memoria quando il programma è in esecuzione. Tutta la memoria del computer è composta da piccole celle chiamate byte . Ad ogni cella è associato un identificatore univoco, o numero: 0, 1, 2, 3, ...; (la numerazione parte da zero). Se conosciamo il numero di una cella , possiamo salvare i dati al suo interno. O ottenere dati da esso. Alcune celle memorizzano il codice del programma, cioè l'insieme dei comandi per il processore. Altri memorizzano i dati utilizzati dal programma. Il numero di cella è anche chiamato indirizzo di cella .

Il processore sa come eseguire i comandi che sono stati caricati in memoria. Quasi tutti i comandi del processore sono qualcosa come prendere i dati da alcune celle , fare qualcosa con loro , quindi inviare il risultato ad altre celle .

Combiniamo centinaia di semplici comandi per ottenere comandi complessi e utili.

Quando una variabile viene dichiarata nel codice, viene allocata una porzione di memoria che non è già in uso. Questo è di solito pochi byte. La dichiarazione di una variabile richiede di indicare il tipo di informazioni che il programma memorizzerà in essa: numeri, testo o altri dati. Dopotutto, se non si conosce il tipo di informazioni da archiviare, non è chiaro quanto sia grande il blocco di memoria da allocare per la variabile.

Agli albori dell'era dei computer, i programmi funzionavano direttamente con gli indirizzi di memoria, ma poi, per comodità dei programmatori, si cominciò a dare alle celle dei nomi. Un nome di variabile univoco è soprattutto per la comodità dei programmatori, poiché il programma gestisce bene gli indirizzi di memoria semplici.


2. Variabili in memoria

In tutto, Java ha 4 tipi di dati per la memorizzazione di numeri interi. Questi sono byte, shorte int.long

Tipo Dimensione in byte Origine del nome del tipo
byte 1 byte è un respelling deliberato di bite per evitare confusione con bit
short 2 Abbreviazione di Short Integer
int 4 Abbreviazione di numero intero
long 8 Abbreviazione di Long Integer

Inoltre, Java ha 2 tipi per i numeri reali: float e double:

Tipo Dimensione in byte Origine del nome del tipo
float 4 Abbreviazione di numero in virgola mobile
double 8 Abbreviazione di Double Float

Ogni volta che l'esecuzione del programma raggiunge un comando per creare una variabile, gli viene allocato un piccolo blocco di memoria (la dimensione dipende dal tipo di variabile).

L'indirizzo di una variabile è l'indirizzo della prima cella del blocco di memoria allocato.

I programmi Java non possono accedere direttamente alla memoria. Qualsiasi lavoro con la memoria avviene solo attraverso la macchina virtuale Java.


3. Il Stringtipo in memoria

Il Stringtipo può archiviare grandi quantità di dati, il che implica che non è solo un tipo di dati, ma una classe completa.

L' Stringoggetto viene posizionato in un blocco di memoria allocato che memorizza l'indirizzo di un altro blocco di memoria in cui è memorizzato il testo.

La int avariabile occupa 4byte e memorizza il valore 1.

La int bvariabile occupa 4byte e memorizza il valore 10,555. Usiamo una virgola come separatore delle migliaia. E usiamo un punto come separatore decimale.

La double dvariabile occupa 8byte e memorizza il valore 13.001.

La String strvariabile occupa 4byte e memorizza il valore G13, che è l'indirizzo della prima cella del blocco di memoria contenente il testo.

Un testo di String objectviene memorizzato in un blocco di memoria separato. L'indirizzo della sua prima cella è memorizzato nella strvariabile.


4. Perché la numerazione inizia con zero nella programmazione

Le persone spesso si chiedono perché i programmatori inizino quasi sempre a contare da zero. Ebbene, il fatto è che ci sono molte situazioni in cui è più conveniente contare da zero (ovviamente ci sono anche situazioni in cui è più conveniente contare da 1).

L'esempio più semplice è l'indirizzamento della memoria. Se alla tua variabile sono stati assegnati 4byte di memoria e sai che Xè l'indirizzo del primo byte, quali sono gli indirizzi di ciascun byte? , , , . Così semplice, abbiamo un gruppo di byte a cui è possibile accedere con gli indici , , , .X+0X+1X+2X+30123

Quando pensiamo a un indirizzo relativo all'interno di un blocco di dati, l'indicizzazione da zero è ciò che ha senso. Questa è la ragione principale per contare da zero .