我们都知道虚拟机栈来存储通过栈帧的形式来存储每一个方法,堆来存储所有对象实例和数组。
而对基本数据类型,即可能声明在方法的局部变量中,也可能声明在类的成员中,这就造成并没有明确的规定来说明基本数据类型到底是存储在堆中还是栈中。
我在 SO 上寻找到了答案
Simplistic answer: it depends on where the variable is declared, not on its type.
Local variables are stored on the stack. Instance and static variables are stored on the heap.
简单来说:这取决于变量的声明位置,而不是它的类型。
局部变量存储在栈中,实例变量和静态变量存储在堆中。
也就是说,基本数据类型如果声明在方法内,那么它就存储在栈中,如果声明在类的成员或声明为 static
那么就存储在堆中。