Чтобы ответить на ваш вопрос в конце, вы можете использовать вспомогательные методы, как показано в комментарии, но где-то что-то должно создать отдельный новый массив и скопировать все элементы.
Массивы - это конструкции фиксированного размера - когда вы их создаете, вы не можете увеличить или уменьшить их на месте.Когда вы создаете массив, часть кучи Java (которая является термином для области памяти, в которой хранятся объекты) равна размеру одного элемента (в данном случае, ссылки на строку), умноженному на длину массива.зарезервировано, и ссылка на эту память назначается переменной, указанной вами в левой части оператора, как в String[] items = new String[10]
.
Таким образом, чтобы увеличить items
, вам нужно создать новый массив нужного вам размера, скопировать все существующие элементы по порядку, а затем переназначить переменную, которая содержала меньший массив, на ссылкубольший массив в этот момент содержится в temp
.items = temp;
просто копирует ссылку в items
, поэтому items
и temp
ссылаются на один и тот же массив.Затем, когда метод завершается, items
остается, в то время как temp
удаляется.
Кроме того, поскольку теперь существует массив (на который ранее ссылался items
), на который не ссылается ни одна переменная, Java приметзаботиться о очистке этого старого массива во время циклов сбора мусора.Однако вам не нужно беспокоиться об удалении элементов в вашем массиве, поскольку вы скопировали их ссылки в новый массив.