Я имею байт [] и хотел бы скопировать его в другой байт []. Возможно, я показываю свою простую историю 'C' здесь, но являюсь там эквивалентом memcpy () на массивах байтов в Java?
Вы можете попробовать System.arraycopy
или использовать функции массива в классе Arrays
, например java.util.Arrays.copyOf
. Оба должны дать вам исходную производительность под капотом.
Arrays.copyOf, вероятно, удобен для чтения, но был введен только в java 1.6.
byte[] src = {1, 2, 3, 4};
byte[] dst = Arrays.copyOf(src, src.length);
System.out.println(Arrays.toString(dst));
Используйте System.arraycopy ()
System.arraycopy(sourceArray,
sourceStartIndex,
targetArray,
targetStartIndex,
length);
Пример,
String[] source = { "alpha", "beta", "gamma" };
String[] target = new String[source.length];
System.arraycopy(source, 0, target, 0, source.length);
или используйте Arrays.copyOf ()
Пример ,
target = Arrays.copyOf(source, length);
java.util.Arrays.copyOf (byte [] source, int length)
был добавлен в JDK 1.6.
Метод copyOf ()
использует System.arrayCopy ()
для создания копии массива, но он более гибкий, чем clone ()
, поскольку вы может делать копии частей массива.
Если вам просто нужна точная копия одномерного массива, используйте clone ()
.
byte[] array = { 0x0A, 0x01 };
byte[] copy = array.clone();
Для других операций копирования массива используйте System.arrayCopy
/ Arrays.copyOf
, как Том предлагает .
В общем, следует избегать клона
, но это исключение из правил.
Вы можете использовать System.arrayCopy . Он копирует элементы из исходного массива в целевой массив. Реализация Sun использует ассемблер, оптимизированный вручную, так что это быстро.