能不能详细说明一下堆栈怎么存储

来源:3-10 局部变量的存储方式

源治泷谷

2020-05-07 00:59:00

int n=100 n是栈地址吗,开辟一个4字节地址 n绑定地址 然后地址里存放100.堆栈完全不懂啊,面试常考

写回答

1回答

苍星乱舞

2020-05-07

基本数据类型当你定义变量时,就相当于给一个盒子起了一个名字(int age;)然后当你给变量赋值时相当于把一个东西装在了箱子里(age = 10;),那么你知道盒子的名字以后就可以使用了,比如打开盒子看看里面的东西,或者换一个其他东西装进去。

引用数据类型也一样,当你定义一个变量时也相当于给一个盒子起了一个名字(String name;)然后当你给变量赋值时有了困难,就目前你知道的两种引用类型来看一个数组,一个字符串。你会发现这两个和基本数据类型不同,他们的大小不确定,数组可大可小,字符串可长可短。

那我的盒子应该买多大的呢?买小了装不下,买大了浪费。只要是固定的大小都有问题,而基本数据类型是固定大小的盒子,这也是为什么各种基本数据类型有最大值最小值的原因因为盒子大小是固定的。所以在你盒子里装的并不是东西本身,而是一张藏宝图。于是当你赋值给引用型变量时总是要先 new String("你好");这就是去找一个足够装的下宝藏的地方,放进去东西然后把位置装进盒子(引用变量)里。

所以当你通过方法传参时,相当于别人有了和你盒子里一样的东西,大家都有一份(因为计算机里都是信息嘛,不会你有了我就没有,大家信息都一样了)。因此无论是传基础还是引用别人修改他盒子里的信息你都不会有影响。

唯一有影响的是如果别人是通过藏宝图去把宝藏给修改了,那你就会有影响,因为是指向同一份宝藏的位置。而你第三个问题里只是别人换了一张藏宝图,一开始是装“1’宝藏现在是指向装“2”的宝藏,于你自己而言是依然是装“1”的宝藏。

如能理解,请采纳!


0

0 学习 · 11489 问题

查看课程