1. Paano nakaayos ang memorya

Ang bawat computer ay may panloob na memorya . Ano ito? Anong mga katangian mayroon ito? At, higit sa lahat, paano tayo nakikinabang dito?

Ang bawat programa (kabilang ang mga program na nakasulat sa Java) ay na-load sa pangunahing memorya bago isagawa. Ang pangunahing memorya ay naglalaman ng code ng programa (na pinaandar ng processor) pati na rin ang data ng programa (ibig sabihin, ang data na mismong inilalagay ng program sa memorya).

Ano ang memorya at ano ito?

Ang isang Excel spreadsheet ay binubuo ng mga cell . Ang bawat cell ay may sariling natatanging identifier ( A1, A2, ... B1, B2). Kung alam mo ang isang cell's identifier , maaari kang palaging sumulat ng ilang halaga dito o makakuha ng anumang halaga na nakaimbak doon. Ang memorya ng computer ay nakaayos sa isang katulad na paraan.

Ang data ng programa at programa ay nakaimbak sa memorya kapag tumatakbo ang programa. Ang lahat ng memorya ng computer ay binubuo ng maliliit na cell na tinatawag na bytes . Ang bawat cell ay may natatanging identifier, o numero, na nauugnay dito: 0, 1, 2, 3, ...; (nagsisimula sa zero ang pagnunumero). Kung alam namin ang numero ng cell , makakapag-save kami ng data dito. O kumuha ng data mula dito. Ang ilang mga cell ay nag-iimbak ng code ng programa, ibig sabihin, ang hanay ng mga utos para sa processor. Ang iba ay nag-iimbak ng data na ginamit ng programa. Ang numero ng cell ay tinatawag ding cell address .

Alam ng processor kung paano magsagawa ng mga utos na na-load sa memorya. Halos lahat ng mga utos ng processor ay parang kumuha ng data mula sa ilang mga cell , gumawa ng isang bagay sa kanila , pagkatapos ay ipadala ang resulta sa ibang mga cell .

Pinagsasama-sama namin ang daan-daang simpleng command para makakuha ng kumplikado at kapaki-pakinabang na mga command.

Kapag ang isang variable ay idineklara sa code, ang isang tipak ng memorya na hindi pa ginagamit ay inilalaan para dito. Ito ay karaniwang ilang byte. Ang pagdedeklara ng variable ay nangangailangan na ipahiwatig mo ang uri ng impormasyon na itatabi ng program dito: mga numero, teksto, o iba pang data. Pagkatapos ng lahat, kung hindi mo alam ang uri ng impormasyon na iimbak, kung gayon hindi malinaw kung gaano kalaki ang isang bloke ng memorya na kailangang ilaan para sa variable.

Sa bukang-liwayway ng edad ng computer, ang mga programa ay gumana nang direkta sa mga address ng memorya, ngunit pagkatapos, para sa kaginhawahan ng mga programmer, ang mga cell ay nagsimulang bigyan ng mga pangalan. Ang isang natatanging variable na pangalan ay higit sa lahat para sa kaginhawahan ng mga programmer, dahil ang programa ay humahawak ng mga plain memory address nang maayos.


2. Mga variable sa memorya

Sa kabuuan, ang Java ay may 4 na uri ng data para sa pag-iimbak ng mga integer. Ito ay byte, short, intat long.

Uri Sukat sa bytes Pinagmulan ng pangalan ng uri
byte 1 Ang byte ay isang sadyang respelling ng kagat upang maiwasan ang pagkalito sa bit
short 2 Maikli para sa Maikling Integer
int 4 Maikli para sa Integer
long 8 Maikli para sa Long Integer

Bilang karagdagan, ang Java ay may 2 uri para sa mga tunay na numero: float at double:

Uri Sukat sa bytes Pinagmulan ng pangalan ng uri
float 4 Maikli para sa Floating Point Number
double 8 Maikli para sa Double Float

Sa bawat oras na ang pagpapatupad ng programa ay umabot sa isang utos upang lumikha ng isang variable, isang maliit na bloke ng memorya ang inilalaan para dito (ang laki ay depende sa uri ng variable).

Ang address ng isang variable ay ang address ng unang cell ng inilalaan na bloke ng memorya.

Hindi pinapayagan ang mga Java program na direktang ma-access ang memorya. Anuman at lahat ng trabaho na may memorya ay nangyayari lamang sa pamamagitan ng Java virtual machine.


3. Ang Stringuri sa memorya

Ang Stringuri ay maaaring mag-imbak ng malalaking halaga ng data, na nagpapahiwatig na ito ay hindi lamang isang uri ng data, ngunit isang ganap na klase.

Ang Stringbagay ay inilalagay sa isang inilalaang bloke ng memorya na nag-iimbak ng address ng isa pang bloke ng memorya kung saan naka-imbak ang teksto.

Ang int avariable ay sumasakop 4sa mga byte at iniimbak ang halaga 1.

Ang int bvariable ay sumasakop 4sa mga byte at iniimbak ang halaga 10,555. Gumagamit kami ng kuwit bilang thousands separator. At gumagamit kami ng tuldok bilang decimal separator.

Ang double dvariable ay sumasakop 8sa mga byte at iniimbak ang halaga 13.001.

String strSinasakop ng variable 4ang mga byte at iniimbak ang value G13, na siyang address ng unang cell ng memory block na naglalaman ng text.

Ang isang teksto ng String objectay naka-imbak sa isang hiwalay na bloke ng memorya. Ang address ng unang cell nito ay naka-imbak sa strvariable.


4. Bakit nagsisimula ang pagnunumero sa zero sa programming

Madalas nagtataka ang mga tao kung bakit halos palaging nagsisimulang magbilang ang mga programmer mula sa zero. Well, ang katotohanan ay mayroong maraming mga sitwasyon kung saan ito ay mas maginhawa upang mabilang mula sa zero (siyempre, mayroon ding mga sitwasyon kung saan ito ay mas maginhawa upang mabilang mula sa 1).

Ang pinakasimpleng halimbawa ng ay memory addressing. Kung ang iyong variable ay inilalaan 4ng mga byte ng memorya at alam mo na iyon Xang address ng unang byte, kung gayon ano ang mga address ng bawat byte? , , , . Kasing simple niyan, mayroon kaming pangkat ng mga byte na maaaring ma-access gamit ang mga indeks , , , .X+0X+1X+2X+30123

Kapag nag-iisip kami ng isang kamag-anak na address sa loob ng isang bloke ng data, ang pag-index mula sa zero ang makatuwiran. Ito ang pangunahing dahilan ng pagbibilang mula sa zero .