- Массивы копирования Java
- 1. Копирование массивов с помощью оператора присваивания
- 2. Использование конструкции цикла для копирования массивов
- 3. Копирование массивов с помощью метода arraycopy ()
- 4. Копирование массивов с помощью метода copyOfRange ()
- 5. Копирование двумерных массивов с помощью цикла
- Копирование двумерных массивов с помощью arraycopy ()
- Русские Блоги
- Четыре метода копирования массивов в Java: метод arraycopy (), метод clone (), метод copyOf () и copyOfRange ().
- Используйте метод copyOf () и метод copyOfRange ()
- 1. Используйте метод copyOf (), чтобы скопировать массив.
- Пример 1
- 2. Используйте метод CopyOfRange (), чтобы скопировать массив.
- Пример 2
- Используйте метод arraycopy ()
- Пример 3
- Используйте метод clone ()
- Пример 4
- Интеллектуальная рекомендация
- совместный запрос mysql с тремя таблицами (таблица сотрудников, таблица отделов, таблица зарплат)
- [Загрузчик классов обучения JVM] Третий день пользовательского контента, связанного с загрузчиком классов
- IP, сеанс и cookie
- [List.toarray () позволяет избежать ошибки принудительного применения] Список универсальных используемых.
- Блог только про Java
- Учимся программировать на Java с нуля
- Копирование массивов в языке Java
- Как скопировать массив в Java?
- Методы копирования массива в Java
Массивы копирования Java
В этом руководстве вы узнаете о различных способах копирования массивов (как одномерных, так и двумерных) в Java с помощью примеров.
В Java мы можем копировать один массив в другой. Есть несколько методов, которые вы можете использовать для копирования массивов в Java.
1. Копирование массивов с помощью оператора присваивания
Выход :
В приведенном выше примере мы использовали оператор присваивания ( = ), чтобы скопировать массив с именем numbers в другой массив с именем positiveNumbers.
Это самый простой способ, и он тоже работает. Однако у этой техники есть проблема. Если мы меняем элементы одного массива, соответствующие элементы других массивов также изменяются. Например,
Выход :
Здесь мы видим, что мы изменили одно значение массива чисел. Когда мы печатаем массив PositiveNumbers, мы видим, что это же значение также изменяется.
Это потому, что оба массива относятся к одному и тому же объекту массива. Это из-за неглубокой копии. Чтобы узнать больше о мелкой копии, посетите мелкую копию.
Теперь, чтобы создавать новые объекты массива при копировании массивов, нам нужна глубокая копия, а не мелкая копия.
2. Использование конструкции цикла для копирования массивов
Выход :
В приведенном выше примере мы использовали for цикл для перебора каждого элемента исходного массива. На каждой итерации мы копируем элементы из исходного массива в целевой массив.
Здесь исходный и целевой массивы относятся к разным объектам (глубокая копия). Следовательно, при изменении элементов одного массива соответствующие элементы другого массива не изменяются.
Обратите внимание на заявление,
Здесь метод toString () используется для преобразования массива в строку. Чтобы узнать больше, посетите метод toString () (официальная документация Java).
3. Копирование массивов с помощью метода arraycopy ()
В Java класс System содержит метод arraycopy() копирования массивов. Этот метод лучше подходит для копирования массивов, чем два вышеупомянутых.
arraycopy() Метод позволяет копировать определенную часть исходного массива в массив назначения. Например,
- src — исходный массив, который вы хотите скопировать
- srcPos — начальная позиция (индекс) в исходном массиве
- dest — целевой массив, куда элементы будут скопированы из источника
- destPos — начальная позиция (индекс) в целевом массиве
- длина — количество элементов для копирования
Выход :
В приведенном выше примере мы использовали arraycopy() метод,
- System.arraycopy(n1, 0, n2, 0, n1.length) — целые элементы из массива n1 копируются в массив n2
- System.arraycopy(n1, 2, n3, 1, 2) — 2 элемента массива n1, начиная с индекса 2, копируются в индекс начиная с 1 массива n3
Как видите, начальное значение по умолчанию для элементов массива типа int равно 0.
4. Копирование массивов с помощью метода copyOfRange ()
Мы также можем использовать метод copyOfRange (), определенный в классе Java Arrays, для копирования массивов. Например,
Вывод
В приведенном выше примере обратите внимание на строку
Здесь мы видим, что мы создаем массив destination1 и одновременно копируем в него исходный массив. Мы не создаем массив destination1 перед вызовом copyOfRange() метода. Чтобы узнать больше о методе, посетите Java copyOfRange.
5. Копирование двумерных массивов с помощью цикла
Подобно одномерному массиву, мы также можем скопировать двухмерный массив с помощью for цикла. Например,
Выход :
В приведенной выше программе обратите внимание на строку
Здесь этот deepToString() метод используется для лучшего представления двумерного массива. Чтобы узнать больше, посетите Java deepToString ().
Копирование двумерных массивов с помощью arraycopy ()
Чтобы упростить приведенный выше код, мы можем заменить внутренний цикл на, System.arraycopy() как в случае с одномерным массивом. Например,
Выход :
Здесь мы видим, что получаем тот же результат, заменяя внутренний for цикл arraycopy() методом.
Источник
Русские Блоги
Четыре метода копирования массивов в Java: метод arraycopy (), метод clone (), метод copyOf () и copyOfRange ().
Так называемое копирование массива относится к копированию элементов одного массива в другой массив.
вJava Существует четыре способа реализовать копирование массива в Arrays: метод copyOf () и метод copyOfRange () класса Arrays, метод arraycopy () класса System и метод clone () класса Object. Использование этих четырех методов будет подробно описано ниже.
Используйте метод copyOf () и метод copyOfRange ()
1. Используйте метод copyOf (), чтобы скопировать массив.
Формат синтаксиса метода copyOf () класса Arrays следующий: Среди них srcArray представляет массив, который нужно скопировать, а length представляет длину нового массива после копирования.
При копировании массива с помощью этого метода по умолчанию копирование начинается с первого элемента исходного массива (значение индекса равно 0), а длина целевого массива будет равна length. Если длина больше srcArray.length, целевой массив будет заполнен значением по умолчанию; если длина меньше srcArray.length, скопируйте в элемент длины (значение индекса length-1) и остановитесь.
Примечание. Если целевой массив уже существует, он будет восстановлен.
Пример 1
Предположим, что в массиве сохранено 5 оценок. Теперь нам нужно сохранить эти 5 оценок в новом массиве, оставив 3 запасных элемента для дальнейшей разработки.
Используйте метод CopyOf () класса Arrays, чтобы завершить код копирования массива следующим образом:
В приведенном выше коде, поскольку длина оценок исходного массива равна 5, а длина копируемого нового массива newScores равна 8, после копирования 5 элементов в исходном массиве, Содержимое остальных 3 элементов будет заполнено значениями по умолчанию.
Поскольку тип данных исходного массива scores — int, и после копирования массива с помощью метода Arrays.copyOf (scores, 8) возвращается тип Object [], поэтому вам нужно для изменения типа данных Object [] Приведение к типу int []. В то же время, поскольку тип данных оценок — int, значение по умолчанию — 0.
Результат выполнения показан ниже.
2. Используйте метод CopyOfRange (), чтобы скопировать массив.
Метод CopyOfRange () класса Arrays — это еще один метод копирования массива, и его синтаксис выглядит следующим образом:
Среди них srcArray представляет исходный массив; startIndex представляет начальный индекс для начала копирования, а целевой массив будет содержать элемент, соответствующий начальному индексу. Кроме того, startIndex должен быть между 0 и srcArray.length; EndIndex представляет конечный индекс, целевой массив не будет содержать элемент, соответствующий конечному индексу, endIndex должен быть больше или равен startIndex и может быть больше srcArray.length, если больше srcArray.length , целевой массив заполняется значением по умолчанию.
Примечание. Если целевой массив уже существует, он будет реконструирован.
Пример 2
Предположим, что существует массив с именем scores с 8 элементами. Теперь вам нужно определить новый массив с именем newScores. Элементы нового массива — это первые 5 элементов массива оценок, и порядок остается неизменным.
Используйте метод copyOfRange () класса Arrays для завершения кода копирования массива следующим образом:
В приведенном выше коде исходный массив оценок содержит 8 элементов. Используйте метод Arrays.copyOfRange (), чтобы скопировать массив в массив newScores длиной 5 и перехватить массив оценок. Достаточно 5 элементов.
Результат выполнения этой программы показан ниже.
Используйте метод arraycopy ()
Метод arraycopy () находится в классе java.lang.System. , Его грамматическая форма следующая:
Среди них srcArray указывает исходный массив; srcIndex указывает начальный индекс в исходном массиве; destArray указывает целевой массив; destIndex указывает начальный индекс в целевом массиве; length указывает длину копируемый массив.
При использовании этого метода для копирования массива длина + srcIndex должна быть меньше или равна srcArray.length, а length + destIndex должна быть меньше или равна destArray.length.
Примечание. Целевой массив должен уже существовать и не будет восстановлен, что эквивалентно замене некоторых элементов в целевом массиве.
Пример 3
Предполагая, что оценки 8 студентов сохранены в массиве scores, теперь нам нужно скопировать все элементы массива от второго элемента до конца в массив с именем newScores, длина 12 лет. Элементы в массиве scores располагаются, начиная с третьего элемента в массиве newScores.
Код для использования метода System.arraycopy () для выполнения функции замены элементов массива выглядит следующим образом:
В этой программе сначала определяется массив оценок, содержащий 8 элементов, затем определяется массив newScores, содержащий 12 элементов, а затем цикл for используется для обхода двух массивов An, элементы в выходном массиве. Наконец, используйте метод System.arraycopy () для замены 8 элементов из третьего элемента в массиве newScores на 8 значений элементов в массиве scores.
Результат выполнения этой программы показан ниже.
Примечание. При использовании метода arraycopy () обратите внимание, что именование этого метода нарушает соглашение об именах Java. То есть первая буква второй копии слова не пишется с заглавной буквы, но по соглашению она должна быть записана как arrayCopy. Просим читателей обращать внимание на написание имени метода при использовании этого метода.
Используйте метод clone ()
clone () метод Вы также можете скопировать массив. Этот метод является методом класса Object, Вы можете создать объект с отдельным пространством памяти. Поскольку массив также является классом Object, вы также можете использовать метод clone () объекта массива для копирования массива.
Возвращаемое значение метода clone () имеет тип Object, который должен быть приведен к соответствующему типу с помощью приведения. Его грамматическая форма относительно проста:
Пример инструкции выглядит следующим образом:
Пример 4
В этой программе сначала определяется массив оценок длиной 8, и элементы в выходном массиве массива проходят цикл, а затем определяется и используется новый массив с именем newScores. Метод scores.clone () копирует элементы из массива scores в массив newScores. Наконец, выполните цикл по массиву newScores и выведите элементы массива.
Результат выполнения программы показан ниже.
Из результатов выполнения видно, что элементы массива scores и элементы массива newScores совпадают.
Интеллектуальная рекомендация
совместный запрос mysql с тремя таблицами (таблица сотрудников, таблица отделов, таблица зарплат)
1. Краткое изложение проблемы: (внизу есть инструкция по созданию таблицы, копирование можно непосредственно практиковать с помощью (mysql)) Найдите отделы, в которых есть хотя бы один сотрудник. Отоб.
[Загрузчик классов обучения JVM] Третий день пользовательского контента, связанного с загрузчиком классов
Двоичное имя Например, java.net.URLClassLoader $ 3 $ 1 означает первый анонимный внутренний класс в третьем анонимном внутреннем классе URLClassLoader ClassLoader анализ A class loader is an object th.
IP, сеанс и cookie
IP, сеанс и cookie IP IP заблокирован Почему заблокирован IP Как решить проблему блокировки IP Как получить IP-адрес прокси Используй прокси Подтвердите действительность IP-адреса прокси О прокси http.
[List.toarray () позволяет избежать ошибки принудительного применения] Список универсальных используемых.
Общая ошибка Справочный руководство Ali Справочник источника .
Источник
Блог только про Java
Учимся программировать на Java с нуля
Копирование массивов в языке Java
При необходимости одну переменную массива можно скопировать в другую, но в этому случае обе переменные будут ссылаться на один и тот же массив.
Результат копирования переменных массивов показан на рис.1.
Рис.1. Копирование переменной массива
Если необходимо скопировать все элементы одного массива в другой, следует использовать метод copyTo() из класса Arrays. Его вызов выглядит следующим образом:
Вторым параметром является длина нового массива. Обычно этот метод применяется для увеличения размера массива:
Дополнительные элементы заполняются нулями, если массив содержит числа, и false — если значения типа boolean. В противоположность этому, если длина нового массива меньше длины исходного, то копируются только начальные элементы.
До появления Java SE 6 для копирования элементов массива использовался метод arrayCopy класса System. Синтаксис этого вызова выглядит следующим образом:
Массив to должен иметь достаточный размер, чтобы в нем уместились все копируемые элементы.
Ниже приведен фрагмент кода, результаты которого показаны на рис.2. Вначале создаются два массива, а затем последние четыре элемента первого массива копируются во второй. Копирование исходного массива начинается с элемента с номером 2, а в целевой массив копируемые данные помещаются, начиная с элемента с номером 3.
Источник
Как скопировать массив в Java?
Java предоставляет встроенные методы для копирования массивов, с помощью которых можно сделать полную копию массива или некоторых элементов массива, вы можете сделать это легко с помощью встроенных классов Java.
Методы копирования массива в Java
Object.clone() — можно использовать этот метод для полного копирования массива. Этот метод не подойдет вам, если вы хотите частично скопировать массив.
System.arraycopy() — лучший способ сделать частичную копию массива. В методе определены такие параметры: массив, элементы которого будем копировать; с какого индекса копировать элементы; результирующий массив; первый элемент результирующего массива и общее количество элементов для копирования.
Например System.arraycopy(источник, 3, назначения, 2, 5) — будет скопировано 5 элементов из массива-источника в результирующий массив, начиная с 3-го индекса источника во 2 индекс результирующего массива.
Arrays.copyOf() — если вы хотите скопировать несколько первых элементов массива или сделать полную копию массива, вы можете использовать этот метод. Правда, он не такой универсальный, как System.arraycopy(), но такой же простой в использовании.
Arrays.copyOfRange() — еще один полезный метод частичного копирования массива.
Вот и все полезные методы для полного и частичного копирования массива. Обратите внимание, что все встроенные методы для копирования доступны только для одномерных массивов. Теперь давайте посмотрим эти методы в действии:
Источник