1. Как е организирана паметта
Всеки компютър има вътрешна памет . Какво е? Какви свойства притежава? И най-важното How ни е от полза?
Всяка програма (включително програми , написани на Java) се зарежда в основната памет, преди да бъде изпълнена. Основната памет съдържа програмния code (който се изпълнява от процесора), Howто и програмните данни (т.е. данните, които самата програма поставя в паметта).
Какво е паметта и Howва е тя?
Електронната table в Exсel се състои от клетки . Всяка клетка има свой собствен уникален идентификатор ( A1
, A2
, ... B1
, B2
). Ако знаете идентификатора на клетка , винаги можете да запишете няHowва стойност в нея or да получите Howвато и да е стойност, която се съхранява там. Компютърната памет е организирана по много подобен начин.
Програмата и програмните данни се съхраняват в паметта , когато програмата работи. Цялата компютърна памет се състои от малки клетки, наречени byteове . Всяка клетка има уникален идентификатор or номер, свързан с нея: 0
, 1
, 2
, 3
, ...; (номерацията започва от нула). Ако знаем номера на клетка , можем да запазим данни в нея. Или вземете данни от него. Някои клетки съхраняват codeа на програмата, т.е. набора от команди за процесора. Други съхраняват данните, използвани от програмата. Номерът на клетката се нарича още address на клетката .
Процесорът знае How да изпълнява команди, които са заредени в паметта. Почти всички команди на процесора са нещо като вземане на данни от някои клетки , направете нещо с тях и след това изпращане на резултата до други клетки .
Комбинираме стотици прости команди, за да получим сложни и полезни команди.
Когато една променлива е декларирана в codeа, за нея се разпределя част от паметта , която още не се използва. Обикновено това са няколко byteа. Декларирането на променлива изисква да посочите типа информация, която програмата ще съхранява в нея: числа, текст or други данни. В края на краищата, ако не знаете типа информация, която да се съхранява, тогава не е ясно колко голям блок памет трябва да бъде разпределен за променливата.
В зората на компютърната ера програмите работеха директно с addressи на паметта, но след това за удобство на програмистите клетките започнаха да получават имена. Уникалното име на променлива е преди всичко за удобство на програмистите, тъй като програмата обработва добре обикновените addressи на паметта .
2. Променливи в паметта
Като цяло Java има 4 типа данни за съхраняване на цели числа. Това са byte
, short
и int
.long
Тип | Размер в byteове | Произход на името на типа |
---|---|---|
byte |
1 |
byte е умишлено повторно изписване на bite, за да се избегне объркване с bit |
short |
2 |
Съкратено от Short Integer |
int |
4 |
Съкращение от Integer |
long |
8 |
Съкратено от дълго цяло число |
Освен това Java има 2 типа за реални числа: float и double:
Тип | Размер в byteове | Произход на името на типа |
---|---|---|
float |
4 |
Съкратено от Floating Point Number |
double |
8 |
Съкратено от Double Float |
Всеки път, когато изпълнението на програмата достигне до команда за създаване на променлива, за нея се разпределя малък блок памет (размерът зависи от типа на променливата).
Java програмите нямат право да осъществяват директен достъп до паметта. Всяка работа с паметта се извършва само чрез виртуалната машина на Java.
3. String
Типът в паметта
Типът String
може да съхранява големи количества данни, което означава, че не е просто тип данни, а пълноценен клас.
Обектът String
се поставя в разпределен блок памет, който съхранява address на друг блок памет, в който се съхранява текстът.
Променливата int
a
заема 4
byteове и съхранява стойността 1
.
Променливата int
b
заема 4
byteове и съхранява стойността 10,555
. Използваме запетая като разделител на хилядите. И използваме точка като десетичен разделител.
Променливата double
d
заема 8
byteове и съхранява стойността 13.001
.
Променливата String
str
заема 4
byteове и съхранява стойността G13
, която е addressът на първата клетка от блока памет, съдържащ текста.
Текстът на String
object
се съхранява в отделен блок памет. Адресът на първата му клетка се съхранява в str
променливата.
4. Защо номерирането започва с нула в програмирането
Хората често се чудят защо програмистите почти винаги започват да броят от нула. Е, факт е, че има много ситуации, когато е по-удобно да се брои от нула (разбира се, има и ситуации, когато е по-удобно да се брои от 1
).
Най-простият пример за това е addressирането на паметта. Ако на вашата променлива са разпределени 4
byteове памет и знаете, че това X
е addressът на първия byte, тогава Howви са addressите на всеки byte? , , , . Колкото и просто, имаме група от byteове, до които може да се стигне с индекси , , , .X+0
X+1
X+2
X+3
0
1
2
3
Когато мислим за относителен address в рамките на блок от данни, индексирането от нула е това, което има смисъл. Това е основната причина да броим от нула .
GO TO FULL VERSION