- используя метод System.arraycopy
- используя метод clone
- используя методы Arrays.copyOf или Arrays.copyOfRange
- провести копирование вручную в цикле
Рассмотрим их по порядку.
КОПИРОВАНИЕ С ИСПОЛЬЗОВАНИЕМ System.arraycopy
Массивы копируются с помощью метода System.arraycopy().
Сигнатура метода следующая:
public static void arraycopy(Object src,
int srcPos,
Object dest,
int destPos,
int length)
Данный метод, после всех проверок, копирует length элементов массива src, начиная с позиции srcPos, в массив dest, начиная с позиции destPos. Его удобно использовать, когда нужно скопировать лишь часть массива. Пример использования:
String[] a = {"abc", "def", "ghs"};
String[] b = new String[5];
System.arraycopy(a,0,b,0,a.length);
for (int i=0; i<b.length; i++)
System.out.println(b[i]);
На печать будет выведено следующее:
abc
def
ghs
null
null
КОПИРОВАНИЕ С ИСПОЛЬЗОВАНИЕМ МЕТОДА clone
По умолчанию, все массивы являются объектами, т.е. поддерживают методы класса java.lang.Object.
Массивы также наследуют интерфейсы java.lang.Cloneable, java.io.Serializable. Для массивов переопределен метод clone(), который проводит поэлементное копирование. Пример использования:
String[] a = {"abc", "def", "ghs"};
String[] b = (String[])a.clone();
a[0] = "changed";
for (int i=0; i<b.length; i++)
System.out.println(b[i]);
На печать будет выведено следующее:
abc
def
ghs
КОПИРОВАНИЕ С ИСПОЛЬЗОВАНИЕМ Arrays.copyOf
Сигнатура метода Arrays.copyOf для чисел типа int имеет следующий вид:
public static int[] copyOf(int[] original,
int newLength)
Производится копирование массива original, возвращается массив длиной newLength. Если original.length < newLength, то оставшаяся часть массива заполняется нулями. Пример использования:
int[] a = {1,2,3};
int[] b = Arrays.copyOf(a,5);
for (int i=0; i<b.length; i++)
System.out.println(b[i]);
На печать будет выведено следующее:
1
2
3
0
0
КОПИРОВАНИЕ ВРУЧНУЮ в ЦИКЛЕ
Простенький пример:
int[] a = {1,2,3};
int[] b = new int[a.length];
for (int i=0; i<a.length; i++)
b[i] = a[i];
Спасибо, всё ясно
ОтветитьУдалитьКопирование в ручную не работает, проверьте
ОтветитьУдалитьДа ладно вам - нужно после for в фигурные скобки взять строчку. Ну и добавить вывод массива (такие мелочи можно и самостоятельно добавлять).
ОтветитьУдалитьpackage labs;
public class asd {
public static void main(String[] args) {
int[] a = {1,2,3};
int[] b = new int[a.length];
for (int i=0; i<a.length; i++)
{
b[i] = a[i];
System.out.println(b[i]);
}
}
}