考虑以下日志:
y = 20000 id(y) 36638928 y = 1000000 id(y) 36639264
如您所见,更改的值后y,其ID也将更改。 这是否意味着int一成不变?幕后发生了什么?
y
int
谢谢!
是的,整数是不可变的。您需要意识到的是:
变量只是您用来引用对象的名称。
20000和1000000是两个 唯一的 整数对象。这意味着它们将永远不会同时共享相同的内存地址。
20000
1000000
简单来说,执行此行时:
y = 20000
发生两件事:
20000在对象空间中创建一个整数对象。
在名称y空间中创建一个名称,并指向该对象。
执行此操作时:
y = 1000000
还有两件事发生:
1000000在对象空间中创建一个新的整数对象。
名称y更改为指向该对象,而不是20000。