java - 堆栈/堆上的整数和整数数组存储

标签 java integer heap-memory stack-memory

我很想知道 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/

相关文章:

java - CordApp Java 堆空间错误和 javax.net.ssl.SSLException

c++ - 可以在堆上创建的对象在 C++ 中被视为 'being on stack' 吗?

java - JAXWS运行时异常

javascript - 在 JavaScript 中将数值转换为用字符填充的字符串

c++ - 什么时候static_casting ceil的结果会妥协?

python - 如何在将百分比转换为整数之前删除百分比

c - 如果调用函数时缓冲区的数据类型不匹配(int * 与 unsigned int *),会发生什么情况?

java - Android Studio 无法启动 Activity ComponentInfo

未找到 JavaFX 包

java - 是否可以跟踪 Vaadin 应用程序