我很想知道 Integer 和 Integer Array 在 Java 中是如何存储在栈/堆上的,有没有人可以指向我的链接?或者有人可以向我解释一下。
更新 1: 以及这如何影响整数和整数数组作为参数传递给 Java 中的方法的方式。
谢谢
最佳答案
无论何时您在局部范围内声明一个变量(方法),它都会被放入堆栈。
也就是说:Type myVariable
会将新变量的空间推送到该方法堆栈框架上,但它还不能使用,因为它尚未初始化。
当您为变量赋值时,该值会被放入堆栈的保留空间中。
现在是棘手的部分。如果类型是原始类型,则值包含您分配的值。例如,int a = 55
会直接将值 55 放入该空间。
但是,如果类型是非原始类型,即 Object 的某个子类,那么放入堆栈的值实际上是一个内存地址。这个内存地址指向堆上的一个地方,也就是实际存放Object的地方。
对象在创建时被放入堆中。
一个例子
private void myMethod()
{
Object myObject = new Object();
}
我们正在声明一个变量,因此我们在栈帧上获得了空间。该类型是一个对象,因此该值将是指向创建对象时分配的堆空间的指针。
关于java - 堆栈/堆上的整数和整数数组存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23110555/