1. Hvordan minne er organisert

Hver datamaskin har internminne . Hva er det? Hvilke egenskaper har den? Og viktigst av alt, hvordan gagner det oss?

Hvert program (inkludert programmer skrevet i Java) lastes inn i hovedminnet før det kjøres. Hovedminnet inneholder programkoden (som kjøres av prosessoren) samt programdataene (dvs. data som programmet selv legger inn i minnet).

Hva er minne og hvordan er det?

Et Excel-regneark består av celler . Hver celle har sin egen unike identifikator ( A1, A2, ... B1, B2). Hvis du kjenner identifikatoren til en celle , kan du alltid skrive en verdi inn i den eller få den verdien som er lagret der. Datamaskinens minne er organisert på en veldig lik måte.

Program- og programdataene lagres i minnet når programmet kjører. Alt datamaskinminne består av små celler kalt bytes . Hver celle har en unik identifikator, eller nummer, knyttet til seg: 0, 1, 2, 3, ...; (nummereringen starter fra null). Hvis vi vet nummeret til en celle , kan vi lagre data i den. Eller få data fra den. Noen celler lagrer programmets kode, dvs. settet med kommandoer for prosessoren. Andre lagrer dataene som brukes av programmet. Cellens nummer kalles også celleadressen .

Prosessoren vet hvordan den skal utføre kommandoer som er lastet inn i minnet. Nesten alle prosessorkommandoer er noe som å ta data fra noen celler , gjøre noe med dem , og deretter sende resultatet til andre celler .

Vi kombinerer hundrevis av enkle kommandoer for å få komplekse og nyttige kommandoer.

Når en variabel er deklarert i kode, blir en del av minnet som ikke allerede er i bruk allokert til den. Dette er vanligvis noen få byte. Å erklære en variabel krever at du angir hvilken type informasjon programmet vil lagre i den: tall, tekst eller andre data. Tross alt, hvis du ikke vet hvilken type informasjon som skal lagres, er det ikke klart hvor stor av en minneblokk som må tildeles variabelen.

Ved begynnelsen av dataalderen jobbet programmer direkte med minneadresser, men så begynte cellene å bli gitt navn for programmerernes bekvemmelighet. Et unikt variabelnavn er fremfor alt for bekvemmeligheten for programmerere, siden programmet håndterer vanlige minneadresser helt fint.


2. Variabler i minnet

I alt har Java 4 datatyper for lagring av heltall. Disse er byte, short, intog long.

Type Størrelse i byte Opprinnelsen til typens navn
byte 1 byte er en bevisst omstaving av bit for å unngå forveksling med bit
short 2 Forkortelse for Short Integer
int 4 Forkortelse for heltall
long 8 Forkortelse for Long Integer

I tillegg har Java 2 typer for reelle tall: float og double:

Type Størrelse i byte Opprinnelsen til typens navn
float 4 Forkortelse for Floating Point Number
double 8 Forkortelse for Double Float

Hver gang programkjøring når en kommando for å lage en variabel, tildeles en liten blokk med minne til den (størrelsen avhenger av typen variabel).

Adressen til en variabel er adressen til den første cellen i den tildelte minneblokken.

Java-programmer har ikke tilgang til minnet direkte. Alt arbeid med minne skjer bare gjennom den virtuelle Java-maskinen.


3. StringTypen i minnet

Typen Stringkan lagre store mengder data, noe som innebærer at det ikke bare er en datatype, men en fullverdig klasse.

Objektet Stringer plassert i en tildelt minneblokk som lagrer adressen til en annen minneblokk der teksten er lagret.

Variabelen int aopptar 4byte og lagrer verdien 1.

Variabelen int bopptar 4byte og lagrer verdien 10,555. Vi bruker komma som tusenskilletegn. Og vi bruker et punktum som desimalskilletegn.

Variabelen double dopptar 8byte og lagrer verdien 13.001.

Variabelen String stropptar 4byte og lagrer verdien G13, som er adressen til den første cellen i minneblokken som inneholder teksten.

En tekst av String objecter lagret i en separat minneblokk. Adressen til dens første celle er lagret i strvariabelen.


4. Hvorfor nummerering starter med null i programmering

Folk lurer ofte på hvorfor programmerere nesten alltid begynner å telle fra null. Vel, faktum er at det er mange situasjoner når det er mer praktisk å telle fra null (selvfølgelig er det også situasjoner når det er mer praktisk å telle fra 1).

Det enkleste eksemplet på er minneadressering. Hvis variabelen din har blitt tildelt 4byte med minne og du vet at det Xer adressen til den første byten, hva er adressene til hver byte? , , , . Så enkelt som det har vi en gruppe byte som kan nås med indekser , , , .X+0X+1X+2X+30123

Når vi tenker på en relativ adresse i en datablokk, er indeksering fra null det som gir mening. Dette er hovedgrunnen til å telle fra null .