当前位置: 首页 > 知识库问答 >
问题:

这两个数组定义有什么不同?

司徒骞尧
2023-03-14

int[][]a=新的int[2][3]int[][]=新的int[][]{{11,12},{13,14,15}}有什么区别?

我对。class文件进行了反编译,发现在第一种情况下,JVM将使用multianwearray来创建数组,而在第二种情况下,它将使用AneWarRay。

我认为在第一种情况下,JVM将创建一个连续的空间。我说的对吗?

共有1个答案

林彬
2023-03-14

我认为在第一种情况下,jvm将创建一个连续的空间。我说的对吗?

不。多维数组仍然是数组的数组。它必须是这样,因为后来访问数组的代码不知道它是如何创建的。

写作

int[][] a = new int[2][3];
int[][] a = new int[2][];
a[0] = new int[3];
a[1] = new int[3];
objArrayOop array = allocate(length, CHECK_NULL);
//...
if (length != 0) {
  for (int index = 0; index < length; index++) {
    ArrayKlass* ak = ArrayKlass::cast(ld_klass);
    oop sub_array = ak->multi_allocate(rank-1, &sizes[1], CHECK_NULL);
    h_array->obj_at_put(index, sub_array);
  }
}
 类似资料:
  • 我正在学习编写用于JavaFX8和Scene Builder的FXML自定义组件。 我编写了如下所示的FXML文件,但Scene Builder不会打开它,由于出现异常,给出消息“open operation has Failed”:

  • 错误: Test.ts(18,30):错误TS2345:类型为“{color1:String;}”的参数不能分配给类型为“squareConfig”的参数。对象文本只能指定已知属性,并且“SquareConfig”类型中不存在“Color1”。

  • 问题内容: 考虑以下两种情况: (转到Playground链接) 第二个打印9.120000000000001,实际上很好 但是,为什么第一行打印9.12,但末尾没有…01?Go是否会将两个未类型化的常数相乘,并在编译时将它们简单地替换为9.12文字? 问题答案: 根据规格: 常量表达式总是精确地求值;中间值和常量本身可能需要比该语言中任何预声明类型支持的精度大得多的精度。 以来 是一个常数表达式

  • 此组件渲染两次并抛出错误。我知道这个错误是因为它们在reduce函数中没有返回语句。但我不明白的是,为什么它会渲染两次? 此外,当我删除代码时,它只呈现一次。据我所知,一个组件只能在四种情况下重新渲染 状态的变化 道具的变化 强制渲染 父母重新渲染。 在我的例子中,父组件没有重新渲染(我通过在父组件中使用console.log检查了它),并且这个组件是无状态的,没有道具被传递给它。有人能解释一下这

  • 为什么它不打印“processTextPosition:ContainsKey”?

  • 我在N主页看到两个版本ode.js下载如下 我应该使用哪一种,有什么区别?