作者:被爱的小花花_ | 来源:互联网 | 2023-05-19 08:19
如下代码:
Integer a=10;
int b=a;
变量 a,b都在栈中这应该没什么问题,但a中存放的是什么,是地址,还是10
b中呢,存放的是地址还是10
11 个解决方案
a是包装类型(对象),存在堆中;b是基本类型,存在栈中。这个要明白!
a和b这两个变量确实放在栈中,但是a是引用一个对象,所以a在栈中存放的是指向对象的地址的值。b在栈中存放就是10
integer是个类,所以他的对象存放的是引用即地址,int b是个基本类型,里面就是存放着一个值。
a是对象,对象存在堆区,b是基本类型,自然存在栈里
a,b 都在栈中,它们都是引用,同时指向常量池中的10.常量池在方法区,而非堆栈
楼主搞清两个概念:
栈内存:存放基本类型和对象的引用变量
堆内存:存放由new创建的对象和数组。
Integer a=10 说穿了就是 Integer a= new Integer(10);
b = 10 ;就是一个基本类型
所以a是在堆中,b在栈中。