我已经阅读了博客,了解原始类型的不变性。他们说整数是不可变的。这是否意味着整数变量在每次赋值时获得新的内存位置?
即。
int32 Val= 34;
Val =38;
现在两个值都将存储在不同的内存位置或相同?
答案 0 :(得分:3)
这是否意味着整数变量在每次赋值时获得新的内存位置?
请记住,整数是“值类型” - 意味着它们存储的变量存储值而不是对某个内存位置的引用。所以当你这样做时:
int32 Val= 34;
Val =38;
新的值存储在Val
中 - 因此只涉及一个“内存位置”,并且该位置的值将被覆盖。< / p>
现在两个值都将存储在不同的内存位置或相同?
那么,从这个意义上来说,34
的“价值”不再存储在任何地方。这是否意味着34
现在在使用38
的任何地方34
?绝不!您所做的就是在Val
中存储不同的值。
想象一下,你有一张纸,上面写着“Val”(只是给它一个名字)。然后你写上“34”。你有多少价值?有多少纸屑?
现在你越过(或白化)“34”并写“38”。 现在你有多少价值观?有多少纸屑?
使用引用类型,类比也可以起作用,但纸上的“值”是引用到不同的纸张。如果更改纸张上的值,则其他废料不会神奇地消失。清洁人员(垃圾收集器)的工作是查看周围的所有纸屑,看看是否有任何其他纸张引用它,如果没有参考则扔掉它。