Arrays.fill и copyOf
Заполняйте массивы и изменяйте их размер
«Arrays.fill и copyOf» — бесплатный урок Java Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Java Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Java Academy содержит 4 уроков всего.
Заполнение массивов
Arrays.fill устанавливает для каждого элемента массива одно и то же значение. Метод изменяет массив на месте и удобен для инициализации или сброса данных.
Простое заполнение
Заполните весь массив одним значением.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] nums = new int[5];
Arrays.fill(nums, 7);
System.out.println(Arrays.toString(nums));
}
}Заполнение диапазона
Arrays.fill(array, from, to, value) заполняет только часть массива. Диапазон включает from и не включает to.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] nums = new int[6];
Arrays.fill(nums, 2, 5, 9);
System.out.println(Arrays.toString(nums));
}
}Заполнение массивов объектов
Метод fill также работает с массивами объектов. Обратите внимание: при заполнении объектом каждая ячейка указывает на одну и ту же ссылку.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
String[] grid = new String[4];
Arrays.fill(grid, "empty");
System.out.println(Arrays.toString(grid));
}
}Изменение размера с помощью copyOf
Массивы имеют фиксированную длину. Чтобы получить массив большего или меньшего размера, Arrays.copyOf(array, newLength) возвращает новый массив заданного размера.
Увеличение массива
Если новая длина больше исходной, дополнительные ячейки получают значение по умолчанию: 0 для числовых типов, false для логического типа и null для объектов.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] nums = {1, 2, 3};
int[] bigger = Arrays.copyOf(nums, 5);
System.out.println(Arrays.toString(bigger));
}
}Уменьшение массива
Если новая длина меньше исходной, массив усекается, а конечные элементы удаляются.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] nums = {1, 2, 3, 4, 5};
int[] smaller = Arrays.copyOf(nums, 3);
System.out.println(Arrays.toString(smaller));
}
}Копирование диапазона
Arrays.copyOfRange(array, from, to) копирует срез в новый массив. Как и раньше, from включается, а to не включается.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] nums = {10, 20, 30, 40, 50};
int[] middle = Arrays.copyOfRange(nums, 1, 4);
System.out.println(Arrays.toString(middle));
}
}copyOf не изменяет массив
В отличие от fill, copyOf не изменяет исходный массив, а возвращает совершенно новый массив. Исходный массив и копия независимы друг от друга.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] original = {1, 2, 3};
int[] copy = Arrays.copyOf(original, 3);
copy[0] = 99;
System.out.println("Original: " + Arrays.toString(original));
System.out.println("Copy: " + Arrays.toString(copy));
}
}Обычный способ изменения размера вручную
До появления ArrayList программы увеличивали массивы, копируя их содержимое в массив большего размера. copyOf удваивает ёмкость одним вызовом.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] data = {1, 2, 3, 4};
data = Arrays.copyOf(data, data.length * 2);
data[4] = 5;
System.out.println(Arrays.toString(data));
}
}fill и copyOf
Запомните разницу: fill перезаписывает существующие ячейки непосредственно и ничего не возвращает; copyOf создаёт копию изменённого размера и возвращает её. Выбирайте подходящий метод в зависимости от того, нужна ли Вам новая длина.
Быстрая проверка
Проверьте, насколько хорошо Вы поняли работу fill и copyOf.
Повторение
Вы научились заполнять массивы и изменять их размер.
Arrays.fillприсваивает всем элементам или указанному диапазону одно значение непосредственно в массиве.Arrays.copyOfвозвращает новый массив заданной длины, добавляя значения-заполнители или усекая массив.Arrays.copyOfRangeкопирует срез.- copyOf не разрушает исходные данные, а fill изменяет их.
Часто задаваемые вопросы
Урок «Arrays.fill и copyOf» бесплатный?
Да — полный текст урока «Arrays.fill и copyOf» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Java Academy, подпишись на CoddyKit PRO. Курс Java Academy содержит 4 уроков всего.
Чему я научусь в уроке «Arrays.fill и copyOf»?
Заполняйте массивы и изменяйте их размер Ты практикуешь Java Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Java Academy?
Предыдущий опыт не требуется. Java Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Arrays.fill и copyOf»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Java Academy?
Да. Каждый урок Java Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Arrays.sort и сортировка
- Arrays.binarySearch
- Arrays.fill и copyOf
- Arrays.equals и toString