is和Java中对象引用的区别
a = 5
b = 5
print(a is b)
这样的输出是True,就是说a和b都是5,所以指向同一个变量。
在java中,int a = 5; int b = 5; 这样的写法只是a和b这两个局部变量的值是5,而没有确定的指向关系,而java中对象的引用变量,如果同时指向一个对象的话,那么对任何一个引用进行对象的成员变量的更改都会导致用另一个引用使用成员变量时,值发生了改变。
回到最初python的例子,a和b同时指向一个值,那么他们就指向了同一块内存,那么我做b = 6,这个时候b就会重新指向另一块内存?python中变量指向的内存,会随着赋值的不同而一直改变?
1
收起
正在回答
1回答
同学,你好,is比较的两个条件1、内容相同,2、内存地址相同。
在Python中,不同的值和不同的数据类型在内存中会有不同的地址来存储。但python会对小整数[-5,256]区间内的整数创建小整数对象池,这些对象一旦创建,就不会回收,所有新创建的在这个范围的整数都是直接引用的。所以造成在[-5,256]区间内的整数不同变量只要值相同,引用地址也相同。需要注意的是,仅仅是在命令行中执行,而在Pycharm中,结果是不一样的,这是因为解释器做了一部分优化。
如果我的回答解决了您的疑惑,请采纳!祝学习愉快~~~~
1.Python零基础入门
- 参与学习 人
- 提交作业 2727 份
- 解答问题 8160 个
想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星