1. Hoe het geheugen is georganiseerd
Elke computer heeft een intern geheugen . Wat is het? Welke eigenschappen heeft het? En, belangrijker nog, wat levert het ons op?
Elk programma (inclusief programma's geschreven in Java) wordt in het hoofdgeheugen geladen voordat het wordt uitgevoerd. Het hoofdgeheugen bevat zowel de programmacode (die wordt uitgevoerd door de processor) als de programmagegevens (dwz gegevens die het programma zelf in het geheugen plaatst).
Wat is geheugen en hoe is het?
Een Excel-spreadsheet bestaat uit cellen . Elke cel heeft zijn eigen unieke identificatie ( A1
, A2
, ... B1
, B2
). Als u de identificatie van een cel kent , kunt u er altijd een waarde in schrijven of de waarde ophalen die daar is opgeslagen. Computergeheugen is op een vergelijkbare manier georganiseerd .

Het programma en de programmagegevens worden in het geheugen opgeslagen wanneer het programma draait. Al het computergeheugen bestaat uit kleine cellen die bytes worden genoemd . Elke cel heeft een unieke identificator of nummer: 0
, 1
, 2
, 3
, ...; (de nummering begint bij nul). Als we het nummer van een cel weten , kunnen we er gegevens in opslaan. Of haal er gegevens uit. Sommige cellen slaan de programmacode op, dwz de reeks opdrachten voor de processor. Anderen slaan de gegevens op die door het programma worden gebruikt. Het nummer van de cel wordt ook wel het celadres genoemd .
De processor weet hoe hij commando's moet uitvoeren die in het geheugen zijn geladen. Bijna alle processorcommando's zijn zoiets als gegevens uit sommige cellen halen , er iets mee doen en het resultaat naar andere cellen sturen .
We combineren honderden eenvoudige commando's om complexe en nuttige commando's te krijgen.
Wanneer een variabele in code wordt gedeclareerd, wordt er een stuk geheugen voor toegewezen dat nog niet in gebruik is. Dit is meestal een paar bytes. Het declareren van een variabele vereist dat u aangeeft welk type informatie het programma erin zal opslaan: getallen, tekst of andere gegevens. Als u niet weet welk type informatie moet worden opgeslagen, is het immers niet duidelijk hoe groot een geheugenblok moet worden toegewezen aan de variabele.
Aan het begin van het computertijdperk werkten programma's rechtstreeks met geheugenadressen, maar toen, voor het gemak van programmeurs, kregen de cellen namen. Een unieke variabelenaam is vooral bedoeld voor het gemak van programmeurs, aangezien het programma gewone geheugenadressen prima verwerkt.
2. Variabelen in het geheugen
In totaal heeft Java 4 gegevenstypen voor het opslaan van gehele getallen. Dit zijn byte
, short
, int
en long
.
Type | Grootte in bytes | Oorsprong van de naam van het type |
---|---|---|
byte |
1 |
byte is een opzettelijke respelling van bite om verwarring met bit te voorkomen |
short |
2 |
Afkorting voor Short Integer |
int |
4 |
Afkorting van Integer |
long |
8 |
Afkorting voor lang geheel getal |
Bovendien heeft Java 2 typen voor reële getallen: float en double:
Type | Grootte in bytes | Oorsprong van de naam van het type |
---|---|---|
float |
4 |
Afkorting voor Floating Point Number |
double |
8 |
Afkorting voor Double Float |
Elke keer dat de programma-uitvoering een opdracht bereikt om een variabele te maken, wordt er een klein stukje geheugen voor toegewezen (de grootte hangt af van het type variabele).
Java-programma's mogen niet rechtstreeks toegang krijgen tot het geheugen. Al het werk met geheugen gebeurt alleen via de virtuele Java-machine.
3. Het String
type in het geheugen
Het String
type kan grote hoeveelheden gegevens opslaan, wat inhoudt dat het niet alleen een gegevenstype is, maar een volwaardige klasse.
Het String
object wordt in een toegewezen geheugenblok geplaatst dat het adres opslaat van een ander geheugenblok waarin de tekst is opgeslagen.
De int
a
variabele neemt 4
bytes in beslag en slaat de waarde op 1
.
De int
b
variabele neemt 4
bytes in beslag en slaat de waarde op 10,555
. We gebruiken een komma als scheidingsteken voor duizendtallen. En we gebruiken een punt als decimaal scheidingsteken.
De double
d
variabele neemt 8
bytes in beslag en slaat de waarde op 13.001
.
De String
str
variabele neemt 4
bytes in beslag en slaat de waarde op G13
, het adres van de eerste cel van het geheugenblok dat de tekst bevat.
Een tekst van de String
object
wordt opgeslagen in een apart geheugenblok. Het adres van de eerste cel wordt opgeslagen in de str
variabele.
4. Waarom nummering bij het programmeren met nul begint
Mensen vragen zich vaak af waarom programmeurs bijna altijd vanaf nul beginnen te tellen. Welnu, het is een feit dat er veel situaties zijn waarin het handiger is om vanaf nul te tellen (er zijn natuurlijk ook situaties waarin het handiger is om vanaf nul te tellen 1
).
Het eenvoudigste voorbeeld is geheugenadressering. 4
Als aan uw variabele bytes geheugen zijn toegewezen en u weet dat dit X
het adres is van de eerste byte, wat zijn dan de adressen van elke byte? , , , . Zo simpel is het, we hebben een groep bytes die toegankelijk zijn met indices , , , .X+0
X+1
X+2
X+3
0
1
2
3
Als we denken aan een relatief adres binnen een gegevensblok, is indexering vanaf nul logisch. Dit is de belangrijkste reden om vanaf nul te tellen .
GO TO FULL VERSION