Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
memcpy+;指针+;JAVA_Java_Arrays_Memcpy - Fatal编程技术网

memcpy+;指针+;JAVA

memcpy+;指针+;JAVA,java,arrays,memcpy,Java,Arrays,Memcpy,我已经看到,没有任何问题可以具体回答这一参数组合: Java+memcpy+指针 我的C/C++背景可能会使我产生偏见。 在C++中我可以做到这一点: memcpy (Destination, Source, length_data); 目标和源可以是两个内存位置。 有没有一种方法可以在Java中使用基元类型的数组来实现这一点 所有的实现 Arrays.copyOf Arrays.copyOfRange 我们基本上完成了一半的工作。从某种意义上说,您可以指定数据量或给定范围,但它们都返回一个

我已经看到,没有任何问题可以具体回答这一参数组合:

Java+memcpy+指针

我的C/C++背景可能会使我产生偏见。 在C++中我可以做到这一点:

memcpy (Destination, Source, length_data);
目标和源可以是两个内存位置。 有没有一种方法可以在Java中使用基元类型的数组来实现这一点

所有的实现

Arrays.copyOf
Arrays.copyOfRange
我们基本上完成了一半的工作。从某种意义上说,您可以指定数据量或给定范围,但它们都返回一个数组,而不会修改现有数组


提前感谢。

请参见Java没有C/C++那样的指针


存在System.arraycopy();查看一下javadocs。

您可以使用

如果src和dest参数引用同一个数组对象,则 复制的执行方式与srcPos至位置处的组件相同 srcPos+length-1首先复制到长度为的临时数组中 组件,然后复制临时数组的内容 位置destPos到destPos+目的地的长度-1 数组


当然,考虑到Java中缺少指针,这不是一个完美的模拟操作。

谢谢。您完全回答了我的问题。我不建议您这样做,但有一个等效的不安全。copyMemory()可用于将任意长度的字节从地址/对象复制到地址/对象。谢谢Peter。我指的是数组的副本。但是您的注释对一般的memcpy操作非常有用。数组是对象,您可以调用Unsafe.arrayBaseOffset()来获取第一个值的偏移量,并调用arrayIndexScale(类)来查找每个元素的大小。