使用System.arraycopy将double[]转换为double[],反之亦然,Java

使用System.arraycopy将double[]转换为double[],反之亦然,Java,java,double,type-conversion,arrays,Java,Double,Type Conversion,Arrays,我需要使用double[]数组,但有时我需要使用double[] private Double[] double_Double(double[] ddata) { Double[] Ddata = new Double[ddata.length]; for (int i = 0; i < ddata.length; i++) { Ddata[i] = ddata[i]; } return Ddata; } private double[] Double_double

我需要使用double[]数组,但有时我需要使用double[]

private Double[] double_Double(double[] ddata) {
  Double[] Ddata = new Double[ddata.length];
  for (int i = 0; i < ddata.length; i++) {
    Ddata[i] = ddata[i];
  }
  return Ddata;
}
private double[] Double_double(Double[] Ddata) {
  double[] ddata = new double[Ddata.length];
  for (int i = 0; i < Ddata.length; i++) {
    ddata[i] = Ddata[i];
  }
  return ddata;
}
没有回答我的问题


测试此方法的问题在于分数部分是“无限的”…

不,您不能

是执行复制的本机方法。这是本机代码

JVM_ENTRY(void, JVM_ArrayCopy(JNIEnv *env, jclass ignored, jobject src, jint src_pos, 
                               jobject dst, jint dst_pos, jint length))  
  JVMWrapper("JVM_ArrayCopy");
  // Check if we have null pointers
  if (src == NULL || dst == NULL) {
    THROW(vmSymbols::java_lang_NullPointerException());
  }
  arrayOop s = arrayOop(JNIHandles::resolve_non_null(src));
  arrayOop d = arrayOop(JNIHandles::resolve_non_null(dst));
  assert(Universe::is_heap(s), "JVM_ArrayCopy: src not an oop");
  assert(Universe::is_heap(d), "JVM_ArrayCopy: dst not an oop");
  // Do copy
  Klass::cast(s->klass())->copy_array(s, src_pos, d, dst_pos, length, thread);
JVM_END
因此,这里您将获得
ArrayStoreException
,因为原语类型 双重和对象类型双重取消装箱和装箱不会发生 在arrayCopy中自动执行

JVM_ENTRY(void, JVM_ArrayCopy(JNIEnv *env, jclass ignored, jobject src, jint src_pos, 
                               jobject dst, jint dst_pos, jint length))  
  JVMWrapper("JVM_ArrayCopy");
  // Check if we have null pointers
  if (src == NULL || dst == NULL) {
    THROW(vmSymbols::java_lang_NullPointerException());
  }
  arrayOop s = arrayOop(JNIHandles::resolve_non_null(src));
  arrayOop d = arrayOop(JNIHandles::resolve_non_null(dst));
  assert(Universe::is_heap(s), "JVM_ArrayCopy: src not an oop");
  assert(Universe::is_heap(d), "JVM_ArrayCopy: dst not an oop");
  // Do copy
  Klass::cast(s->klass())->copy_array(s, src_pos, d, dst_pos, length, thread);
JVM_END