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, inten 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).

Het adres van een variabele is het adres van de eerste cel van het toegewezen geheugenblok.

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 Stringtype in het geheugen

Het Stringtype kan grote hoeveelheden gegevens opslaan, wat inhoudt dat het niet alleen een gegevenstype is, maar een volwaardige klasse.

Het Stringobject wordt in een toegewezen geheugenblok geplaatst dat het adres opslaat van een ander geheugenblok waarin de tekst is opgeslagen.

De int avariabele neemt 4bytes in beslag en slaat de waarde op 1.

De int bvariabele neemt 4bytes 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 dvariabele neemt 8bytes in beslag en slaat de waarde op 13.001.

De String strvariabele neemt 4bytes 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 objectwordt opgeslagen in een apart geheugenblok. Het adres van de eerste cel wordt opgeslagen in de strvariabele.


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. 4Als aan uw variabele bytes geheugen zijn toegewezen en u weet dat dit Xhet 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+0X+1X+2X+30123

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 .