1. Масиви в паметта
В предишните примери илюстрациите бяха малко неточни.
При създаване на масиви (Howто при създаване на низове) се разпределят два отделни блока памет: един за съхранение на самия масив (контейнер) и втори блок за променливата, която съхранява неговия address . Картината по-долу представя това пояснение:
Паметта, разпределена за масива от 10
int
елементи и int[]
променливата, която съхранява address на int
масива, е показана в зелено.
За сравнение, обикновена int
променлива, съхраняваща стойността, 199
е показана в синьо.
Това малко напомня на съхраняване на низове в паметта, не мислите ли?
Точно така, струни. И точно Howто когато работите с низове, можете да присвоите променливи на масива една на друга:
Код | Обяснение |
---|---|
|
Създайте масив от 10 int елементи. Присвоете стойността 4 на клетката с индекс 2 . Присвоете стойността 9 на клетката с индекс 7 . В b променливата запишете address, съхранен в a променливата. Сега a и b посочете към същия обект от масив в паметта. В клетката на обекта на масива с индекс 9 напишете сумата от стойностите, които се съхраняват в клетки 2 (която съхранява стойността 4 ) и 7 (която съхранява стойността 9 ). |
Обектът на масива остава точно там, където е бил, а променливите a
и b
съхраняват същия address (препратка) към същия обект. Погледни снимката:

2. Повече подробности за работата с масиви
Можете да създадете масив от елементи от абсолютно всяHowъв тип. За да направите това, просто напишете квадратни скоби след името на типа. Най-общо създаването на масив изглежда така:
type[] name = new type[number];
Където type е типът на елементите, които ще съхраняваме в масива. Името е името на променливата, която ще използваме за препращане към масива, а числото е броят на клетките в масива.
Примерът по-горе е каноничната форма за създаване на променлива масив и обект масив. В действителност това са две отделни единици.
Можете да създадете променлива на масив отделно от обект на масив:
type[] name;
name = new type[number];
И още нещо, което не е без meaning:
Примери:
Код | Обяснение |
---|---|
|
Създайте масив от n елементи |
|
Създайте масив с 203 елементи |
|
|
0..99
с ArrayIndexOfBoundException
, което означава, че индексът е бил извън границите на масива.
3. Дължина на масива
Както видяхте в предишния пример, можете да създадете променлива от масив сама по себе си и след това по-късно да й присвоите стойност (препратка към обект от масив) някъде в codeа. Можете дори да направите това:
Код | Обяснение |
---|---|
|
Създайте масивна променлива, чийто тип е int[] Ако a променливата е по-малка от 10 , тогава създайте масив от 10 елементи. В противен случай създайте масив от 20 елементи |
И сега Howво друго можете да направите с такъв масив? Откъде знаеш колко елемента има в него?
За да помогнат с това, масивите имат специално свойство (променлива), наречено length
. Можете да намерите дължината на масив, като използвате този израз:
array.length;
Тук array
е името на променливата на масива и length
е името на свойството на масива. Стойността на length
свойството не може да бъде променена: length
самото свойство може да бъде присвоено на други променливи, но нищо не може да му бъде присвоено (ако се опитате да направите това, програмата просто няма да се компorра).
Можем да продължим с предишния пример така:
Код | Обяснение |
---|---|
|
Създайте масивна променлива, чийто тип е int[] Ако a променливата е по-малка от 10 , тогава създайте масив от 10 елементи. В противен случай създайте масив от 20 елементи Превъртете всички елементи на масива: от 0 до дължинаarray.length - 1 |
4. Обобщение на фактите за масивите в Java
Нека обобщим Howво знаем за масивите:
Факт 1. Масивът се състои от много клетки.
Факт 2. Вие влизате в конкретна клетка, като използвате нейния номер (индекс).
Факт 3. Всички клетки са от един и същи тип.
Факт 4. Първоначалната стойност на всички клетки е 0 (ако клетките съхраняват числа), null
(ако клетките съхраняват препратки към обекти) or false
(ако клетките съхраняват boolean
стойности). Ще научите повече за стойностите по подразбиране в тази глава .
Факт 5. String[] list
е просто декларация на променлива. Това не създава самия контейнер (обект на масив). За да използвате променливата, първо трябва да създадете масив (контейнер) и да го присвоите на променливата. Вижте примера по-долу.
Факт 6. Когато създаваме масивен обект (контейнер), трябва да посочим колко е голям, т.е. колко клетки съдържа. Това се прави с израз като: new TypeName[n]
;
Факт 7. Дължината на масив може да бъде намерена с помощта на .length
свойството.
Факт 8. След като създадете масив, не можете да промените типа на неговите елементи or броя на елементите, които той съхранява.
Код | Обяснение |
---|---|
|
s е null list еnull |
|
Променливата list съхранява препратка към обект: низов масив, състоящ се от 10 елементи. n е10 |
|
Сега |
|
Ще бъде хвърлено изключение (програмна грешка), т.е. програмата ще се срине. list съхранява препратка къмnull |
|
Ще бъде генерирано изключение за масив извън границите (програмна грешка). Ако a list съхранява 10 елементи/клетки, тогава валидните индекси са: 0 1 2 3 4 5 6 7 8 9 — 10 елементи. |
GO TO FULL VERSION