在 Java 中,数组存储原始值(int、char、...)或对象的引用(又名指针)。
当使用“new”创建对象时,会在堆中分配内存空间并返回引用。这也适用于数组,因为数组是 Java 中的对象。
int arr[] = new int[3];
int[] arr 只是对 3 个整数数组的引用。如果你创建一个包含 10 个整数的数组,它是一样的——分配一个数组并返回一个引用。
二维数组怎么样?实际上,Java 中只能有一维数组。二维数组只是一维数组的数组。
int[ ][ ] arr = new int[3][ ];
arr[0] = new int[3];
arr[1] = new int[5];
arr[2] = new int[4];
多维数组与您想象的相似。
数组也是 Java 中的对象,因此对象在内存中的样子适用于数组。
正如我们所知,JVM runtime data areas 包括堆、JVM 堆栈等。下面举一个简单的例子,让我们看看数组及其引用的存储位置。
class A {
int x;
int y;
}
...
public void m1() {
int i = 0;
m2();
}
public void m2() {
A a = new A();
}
...
通过上面的声明,让我们调用 m1() 看看会发生什么:
1、当m1被调用时,一个新的帧(Frame-1)被压入栈中,并且在Frame-1中也创建了局部变量i。
数组的处理方式与对象相同,因此数组在内存中的位置很简单。
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://www.dailycodebuffer.com/what-does-a-java-array-look-like-in-memory/
内容来源于网络,如有侵权,请联系作者删除!