局部对象的存储位置疑问
局部对象的存储位置疑问
嘿,这个问题好多刚上手编程的朋友都会搞混,我给你唠明白哈!
- 核心结论先给你:只要是用
new关键字创建出来的对象,甭管它是在哪个方法里定义的局部对象,对象本身肯定存在堆(Heap)内存里。 - 那栈(Stack)里存的是啥呢?如果这个局部对象是引用类型(比如Java里的类实例、数组这些),栈里只会存一个指向堆中该对象的引用地址,相当于一个“指针”,真正的对象本体还是在堆里待着。
- 要是你定义的是局部的基本数据类型(比如
int num = 20;这种),那它的数值才会直接存在栈里,因为这类数据本身就简单,不需要额外的堆存储。
之前谷歌没找到结果可能是关键词没选准,换个精准点的词搜应该就能找到一堆相关解释啦~
备注:内容来源于stack exchange,提问作者Daniil Kamskiy
相关产品推荐
相关产品推荐

