1. Hur minnet är organiserat

Varje dator har internminne . Vad är det? Vilka egenskaper har den? Och, viktigast av allt, hur gynnar det oss?

Varje program (inklusive program skrivna i Java) laddas in i huvudminnet innan det körs. Huvudminnet innehåller programkoden (som exekveras av processorn) samt programdata (dvs data som programmet själv lägger in i minnet).

Vad är minne och hur är det?

Ett Excel-kalkylblad består av celler . Varje cell har sin egen unika identifierare ( A1, A2, ... B1, B2). Om du känner till en cells identifierare kan du alltid skriva något värde i den eller hämta det värde som är lagrat där. Datorminnet är organiserat på ett mycket liknande sätt .

Program- och programdata lagras i minnet när programmet körs. Allt datorminne består av små celler som kallas bytes . Varje cell har en unik identifierare, eller nummer, associerad med sig: 0, 1, 2, 3, ...; (numreringen börjar från noll). Om vi ​​vet en cells nummer kan vi spara data i den. Eller hämta data från den. Vissa celler lagrar programmets kod, dvs uppsättningen kommandon för processorn. Andra lagrar data som används av programmet. Cellens nummer kallas även celladressen .

Processorn vet hur man utför kommandon som har laddats in i minnet. Nästan alla processorkommandon är något som att ta data från vissa celler, göra något med dem och sedan skicka resultatet till andra celler .

Vi kombinerar hundratals enkla kommandon för att få komplexa och användbara kommandon.

När en variabel deklareras i kod tilldelas en minnesbit som inte redan används för den. Detta är vanligtvis några byte. Att deklarera en variabel kräver att du anger vilken typ av information programmet kommer att lagra i den: siffror, text eller annan data. När allt kommer omkring, om du inte vet vilken typ av information som ska lagras, är det inte klart hur stort minnesblock som behöver allokeras för variabeln.

I början av datoråldern arbetade programmen direkt med minnesadresser, men sedan, för programmerarnas bekvämlighet, började cellerna få namn. Ett unikt variabelnamn är framför allt till för programmerares bekvämlighet, eftersom programmet hanterar vanliga minnesadresser alldeles utmärkt.


2. Variabler i minnet

Sammanlagt har Java 4 datatyper för att lagra heltal. Dessa är byte, short, intoch long.

Typ Storlek i byte Ursprunget till typens namn
byte 1 byte är en avsiktlig omstavning av bite för att undvika förväxling med bit
short 2 Förkortning för Short Integer
int 4 Förkortning för heltal
long 8 Förkortning för Long Integer

Dessutom har Java 2 typer för reella tal: flytande och dubbel:

Typ Storlek i byte Ursprunget till typens namn
float 4 Förkortning för Floating Point Number
double 8 Förkortning för Double Float

Varje gång programkörning når ett kommando för att skapa en variabel, tilldelas ett litet minnesblock för den (storleken beror på typen av variabel).

Adressen för en variabel är adressen till den första cellen i det allokerade minnesblocket.

Java-program får inte komma åt minnet direkt. Allt arbete med minne sker endast genom den virtuella Java-maskinen.


3. StringTypen i minnet

Typen Stringkan lagra stora mängder data, vilket innebär att det inte bara är en datatyp, utan en fullvärdig klass.

Objektet Stringplaceras i ett allokerat minnesblock som lagrar adressen till ett annat minnesblock i vilket texten är lagrad.

Variabeln int aupptar 4byte och lagrar värdet 1.

Variabeln int bupptar 4byte och lagrar värdet 10,555. Vi använder kommatecken som tusentalsavgränsare. Och vi använder en punkt som decimalavgränsare.

Variabeln double dupptar 8byte och lagrar värdet 13.001.

Variabeln String strupptar 4bytes och lagrar värdet G13, som är adressen till den första cellen i minnesblocket som innehåller texten.

En text av den String objectlagras i ett separat minnesblock. Adressen till dess första cell lagras i strvariabeln.


4. Varför numrering börjar med noll i programmering

Folk undrar ofta varför programmerare nästan alltid börjar räkna från noll. Jo, faktum är att det finns många situationer när det är bekvämare att räkna från noll ( naturligtvis finns det också situationer när det är bekvämare att räkna från ) 1.

Det enklaste exemplet på är minnesadressering. Om din variabel har tilldelats 4minnesbytes och du vet att det Xär adressen till den första byten, vilka är adresserna för varje byte? , , , . Så enkelt som det, vi har en grupp byte som kan nås med index , , , .X+0X+1X+2X+30123

När vi tänker på en relativ adress inom ett datablock är indexering från noll det som är vettigt. Detta är huvudskälet till att räkna från noll .