System.arraycopy()
- метод поверхностного копирования.
Для массива примитивного типа он скопирует значения из одного массива в другой:
int[] a = new int[]{1,2};
int[] b = new int[2];
System.arraycopy(a, 0, b, 0, 2);
b
теперь будет {1,2}.Изменения в a
не затронут b
.
Для массива непримитивного типа он скопирует ссылки объекта из одного массива в другой:
MyObject[] a = new MyObject[] { new MyObject(1), new MyObject(2)};
MyObject[] b = new MyObject[2];
System.arraycopy(a, 0, b, 0, 2);
b
будет содержать ссылку new MyObject(1)
, new MyObject(2)
сейчас.Но если в a
будут внесены какие-либо изменения в new MyObject(1)
, это также повлияет на b
.
Правильны ли вышеуказанные утверждения или нет?