java - 使用 System.arraycopy 将 double[] 转换为 Double[] 和 Viceversa,Java

标签 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[] Ddata) {
  double[] ddata = new double[Ddata.length];
  for (int i = 0; i < Ddata.length; i++) {
    ddata[i] = Ddata[i];
  }
  return ddata;
}

我可以用 System.arraycopy 开发这个吗?

private Double[] double_Double(double[] ddata) {
  Double[] Ddata = new Double[ddata.length];
  System.arraycopy(ddata, 0, Ddata, 0, Ddata.length);
  return Ddata;
}
private double[] Double_double(Double[] Ddata) {
  double[] ddata = new double[Ddata.length];
  System.arraycopy(Ddata, 0, ddata, 0, ddata.length);
  return ddata;
}

How do I convert Double[] to double[]?没有回答我的问题!

测试此方法的问题是由于小数部分是“无穷大”......

最佳答案

不可以

arrayCopy是执行复制的 native 方法。这是 native 代码。

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

so here you will get ArrayStoreException because primitive type double and Object Type DOUBLE unboxing and boxing doesn't happen automatically in arrayCopy.

关于java - 使用 System.arraycopy 将 double[] 转换为 Double[] 和 Viceversa,Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32163217/

相关文章:

java - 如何在我的 Android Studio 项目上使用代号 one 迁移工具?

c++ - 如何在 C++ 中重新建立 double

c++ - 未解析的外部静态变量

c# - 从字节数组创建正确转义的字符串

c# - 将 char[] 转换为 byte[] 会导致更高的计数

c# - 将类转换为另一个类或将类转换为另一个类

java - 如何使用此 Groovy 代码从 Groovy 类获取数据源连接?

java - 随机均匀分布

java - 来自客户端的第一个字符串由服务器发送并显示。之后服务器就没有收到了吗?

Java转换为公里