Давайте попробуем сделать массивы простыми. Я постараюсь использовать как можно больше реальных сценариев, чтобы все, даже те, кто не разбирается в технических вопросах, могли их понять.

Во-первых, хороший способ думать о массиве как о контейнере, таком как коробка. Если бы у вас были предметы, например компакт-диски, и вы хотели бы хранить их все, вы бы нашли для них коробку. Теперь, есть некоторые вопросы, которые исходят из этого. Во-первых, сколько компакт-дисков я буду хранить, чтобы знать, насколько большая коробка мне нужна. Кроме того, вы должны убедиться, что у вас больше ничего нет в этой коробке, обычно в коробке для компакт-дисков хранятся только ваши компакт-диски!

Таким образом, с массивом или контейнером вы сначала инициализируете его и говорите, сколько объектов у вас там будет, в нашем случае это будут компакт-диски.

в java это делается так:

CDs[] CDBox = new CDs[10]

В этом случае мы инициализируем коробку, которая позволит нам иметь в ней 10 компакт-дисков. Следует отметить, что с массивами вам нужно будет указать количество вещей, которые вы будете хранить в нем, прежде чем хранить их. Это означает, что в нашем случае, если у нас есть 11 компакт-дисков, нам придется создать новый массив для размещения дополнительного компакт-диска.

Существует два взаимодействия с массивами: запись в и чтение из из массива.

Важной частью информации является то, что вы можете размещать свои объекты в любой заранее определенной точке массива. Например, если вы хотите воспроизвести компакт-диск в слоте 8, вы можете это сделать, вам не нужно начинать с первого слота. В соответствии с этим очень важно понимать, что массивы будут начинаться с 0. Это означает, что когда я определяю количество компакт-дисков, которые я хочу хранить в массиве, как 10 = (n), это действительно переводится в 9 (n-1). Эти числа известны как индексы. Поэтому, когда я сказал, что вы можете поместить компакт-диск в слот 8, это означало бы, что он будет в индексе 7.

Итак, если бы я сделал:

CD theBeatles = new CD("The Beatles");
CDBox[7] = theBeatles;

Теперь мы вставили компакт-диск Beatles в 8-й слот, а в вычислениях — 7-й индекс.

Кроме того, если бы мы записали два компакт-диска в один и тот же слот, слот 8 выглядел бы так:

CD theBeatles = new CD("The Beatles");
CD rollingStones = new CD("The Rolling Stones");
CDBox[7] = theBeatles;
CDBox[7] = rollingStones;

Сначала мы записали beatles в слот 8, однако, когда мы записали Rolling Stones в слот 8, это перезаписало наше предыдущее значение, и поэтому окончательное значение будет RollingStones.

Циклы — очень распространенный способ доступа (чтения и записи) к массивам.

int[] numbers = new int[10]
//inserting our values
for(int i=0; i < 10; i++){
number[i] = i + 1;
}
//reading our values that we inserted: 
for(int i=0; i<10; i++){
System.out.println(numbers[i]);
}
//Numbers array will be as follows: 
//1 2 3 4 5 6 7 8 9 10

Вы можете проверить емкость массива в любое время. Это сумма, которую вы определили в начале, «насколько велика была ваша коробка для компакт-дисков».

System.out.println(CDBox.length);

Это скажет нам: 10. Однако убедитесь, что вы понимаете, что это не означает, что мы можем вставить компакт-диск в CDBox[10], всегда помните индексы, у нас есть емкость 10, но видя, что счетчик начинается с 0, это n-1, где 10 равно 10, 10–1 = 9. Это максимальный слот, который мы можем вставить в CDBox[9].

С точки зрения знания того, сколько значений было заполнено в нашей коробке для компакт-дисков, т. Е. Сколько компакт-дисков присутствует 1, 2, 3 из 10? К сожалению, мы, как программисты, должны сами это учитывать. Нам нужно было бы ввести переменную длины и сделать так, чтобы она автоматически увеличивалась при вставке наших значений:

int lenght = 0
for(int i=0; i<3; i++){
numbers[i]= i + 1;
length++
}
System.out.println(length)
In this example, our array would have the capacity of 10, as it always will. 
But the amount of CDs in the box, would be 2.

Вставка в начало уже заполненного массива будет очень затратной. Это будет означать, что все остальные значения должны быть сдвинуты на одну позицию вправо. Следовательно, это будет означать, что временная сложность будет равна N значениям. Количество времени будет пропорционально длине массива.

Комментарий выше относится к следующему сценарию:

→ если у вас есть массив длины 2: поэтому наши индексы 0, 1. Если мы поместим значения «тест» и «тестирование» в массив. Скажем, мы хотим поместить «test», который находится в индексе 0 (начало массива), в следующей позиции, а «hello» — в начале массива. Нам пришлось бы переместить «тест» на следующую позицию, а «привет» нужно было бы присвоить индекс 0.

Когда вы вставляете значение в случайную позицию, скажем, у вас есть массив, который может содержать 10 элементов (индексы: 0–9). Если вы хотите вставить по индексу 5, это означает, что все 6,7,8,9 должны быть сдвинуты на единицу вправо. Опять же, дорогостоящая сделка.