Есть ли эквивалент memcpy () в Java?



У меня есть байт[] и хотел бы скопировать его в другой байт[]. Может быть, я показываю здесь свой простой фон "C", но есть ли эквивалент memcpy() на байтовых массивах в Java?

518   6  

6 ответов:

вы можете попробовать System.arraycopy или использовать функции массива в Arrays класс java.util.Arrays.copyOf. Оба должны дать вам родную производительность под капотом.

массивы.copyOf, вероятно, благоприятен для читаемости, но был представлен только в java 1.6.

 byte[] src = {1, 2, 3, 4};
 byte[] dst = Arrays.copyOf(src, src.length);
 System.out.println(Arrays.toString(dst));

использовать

если вы просто хотите получить точную копию одномерного массива, используйте clone().

byte[] array = { 0x0A, 0x01 };
byte[] copy = array.clone();

для других операций копирования массива используйте System.arrayCopy/Arrays.copyOf как говорит о том.

в общем, clone следует избегать, но это исключение из правил.

можно использовать

Java на самом деле имеет что-то вроде memcpy(). Небезопасный класс имеет метод copyMemory (), который по существу идентичен memcpy (). Конечно, как и memcpy (), он не обеспечивает защиту от наложения памяти, уничтожения данных и т. д. Неясно, действительно ли это memcpy () или memmove (). Он может быть использован для копирования с фактических адресов на фактические адреса или из ссылок на ссылки. Обратите внимание, что если используются ссылки, вы должны предоставить смещение (или JVM умрет как можно скорее).

небезопасно.copyMemory () работает (до 2 ГБ в секунду на моем старом уставшем ПК). Используйте на свой страх и риск. Обратите внимание, что небезопасный класс не существует для всех реализаций JVM.

можно использовать

Comments

    Ничего не найдено.