1. Hogyan szerveződik az emlékezet
Minden számítógép rendelkezik belső memóriával . Mi az? Milyen tulajdonságai vannak? És ami a legfontosabb: milyen hasznunkra válik ez?
Minden program (beleértve a Java nyelven írt programokat is ) végrehajtása előtt betöltődik a fő memóriába . A főmemória tartalmazza a programkódot (amelyet a processzor hajt végre), valamint a programadatokat (azaz az adatokat, amelyeket a program maga helyez el a memóriába).
Mi a memória és milyen?
Az Exсel-táblázat cellákból áll . Minden cellának saját egyedi azonosítója van ( A1
, A2
, ... B1
, B2
). Ha ismeri egy cella azonosítóját , akkor mindig írhat bele valamilyen értéket, vagy lekérheti az ott tárolt értéket. A számítógép memóriája nagyon hasonló módon szerveződik.
A program és a programadatok a program futása közben a memóriában tárolódnak . A számítógép összes memóriája kis cellákból, úgynevezett bájtokból áll . Minden cellához egyedi azonosító vagy szám tartozik: 0
, 1
, 2
, 3
, ...; (a számozás nulláról indul). Ha ismerjük egy cella számát , adatokat menthetünk bele. Vagy szerezz be belőle adatokat. Egyes cellák a program kódját, azaz a processzor parancskészletét tárolják. Mások a program által használt adatokat tárolják. A cella számát cellacímnek is nevezik .
A processzor tudja, hogyan kell végrehajtani a memóriába betöltött parancsokat. Szinte minden processzorparancs olyasmi, hogy adatokat vesz egyes cellákból , csinál velük valamit , majd az eredményt elküldi más celláknak .
Több száz egyszerű parancsot kombinálunk, hogy összetett és hasznos parancsokat kapjunk.
Amikor egy változót a kódban deklarálnak, egy olyan memóriarész kerül lefoglalásra, amelyet még nem használnak. Ez általában néhány bájt. Egy változó deklarálásához meg kell adni, hogy a program milyen típusú információkat fog tárolni benne: számokat, szöveget vagy egyéb adatokat. Végül is, ha nem ismeri a tárolandó információ típusát, akkor nem világos, hogy mekkora memóriablokkot kell lefoglalni a változóhoz.
A számítógép-korszak hajnalán a programok közvetlenül memóriacímekkel dolgoztak, de aztán a programozók kényelme érdekében a cellákat elkezdték elnevezni. Az egyedi változónév mindenekelőtt a programozók kényelmét szolgálja, mivel a program jól kezeli a sima memóriacímeket.
2. Változók a memóriában
Összességében a Java 4 adattípussal rendelkezik az egész számok tárolására. Ezek a byte
, short
, int
és long
.
típus | Méret bájtban | A típus nevének eredete |
---|---|---|
byte |
1 |
A byte a bitet szándékos elírása, hogy elkerüljük a bittel való összekeverést |
short |
2 |
Rövid egész szám |
int |
4 |
Az Integer rövidítése |
long |
8 |
A Long Integer rövidítése |
Ezenkívül a Java 2 típusú valós számmal rendelkezik: float és double:
típus | Méret bájtban | A típus nevének eredete |
---|---|---|
float |
4 |
A lebegőpontos szám rövidítése |
double |
8 |
A Double Float rövidítése |
Minden alkalommal, amikor a program végrehajtása elér egy változó létrehozására irányuló parancsot, egy kis memóriablokk kerül lefoglalásra (a változó típusától függ).
A Java programok nem férhetnek hozzá közvetlenül a memóriához. A memóriával végzett minden munka csak a Java virtuális gépen keresztül történik.
3. A String
típus a memóriában
A String
típus nagy mennyiségű adatot képes tárolni, ami azt jelenti, hogy nem csak egy adattípus, hanem egy teljes értékű osztály.
Az String
objektum egy lefoglalt memóriablokkba kerül, amely egy másik memóriablokk címét tárolja, amelyben a szöveg tárolva van.
A int
a
változó 4
bájtokat foglal el és tárolja az értéket 1
.
A int
b
változó 4
bájtokat foglal el és tárolja az értéket 10,555
. Ezres elválasztóként vesszőt használunk. És pontot használunk tizedes elválasztóként.
A double
d
változó 8
bájtokat foglal el és tárolja az értéket 13.001
.
A String
str
változó 4
bájtokat foglal el és tárolja az értéket G13
, amely a szöveget tartalmazó memóriablokk első cellájának címe.
A szöveg String
object
egy külön memóriablokkban van tárolva. Az első cellájának címe a változóban tárolódik str
.
4. Miért nullával kezdődik a számozás a programozásban?
Az emberek gyakran csodálkoznak azon, hogy a programozók miért kezdenek szinte mindig nulláról számolni. Nos, az tény, hogy sok olyan helyzet van, amikor kényelmesebb nullától számolni (persze vannak olyan helyzetek is, amikor kényelmesebb -tól 1
).
A legegyszerűbb példa erre a memóriacímzés. 4
Ha a változónk memóriabájtokat foglalt le , és tudja, hogy X
ez az első bájt címe, akkor mi az egyes bájtok címe? , , , . Ilyen egyszerű: van egy bájtcsoportunk, amely , , , indexekkel érhető el .X+0
X+1
X+2
X+3
0
1
2
3
Ha egy adatblokkon belüli relatív címre gondolunk, a nullától kezdődő indexelésnek van értelme. Ez a fő oka a nullától való számolásnak .