java java中定义一个二维数组arr,arr的地址和arr[0]为什么不一样,是怎么开辟内存空间的?

java中定义一个二维数组arr,arr的地址和arr[0]为什么不一样,是怎么开辟内存空间的?二维数组arr[]可视为上一行和下一列。例如,arr[0][1]一维数组arr[]的第一行第二列可以看作

java中定义一个二维数组arr,arr的地址和arr[0]为什么不一样,是怎么开辟内存空间的?

二维数组arr[]可视为上一行和下一列。例如,arr[0][1]一维数组arr[]的第一行第二列可以看作arr[0

的第一个元素,在图中,堆栈内存空间的引用应该是数组的第一个地址ff01h。在Java中创建数组时,需要在堆内存中打开一个连续的空间,然后确保数组的第一个地址在堆栈内存空间中。正是因为数组中每个元素占用的内存大小相同,所以可以通过下标来访问它,从而达到o(1)的时间复杂度。