学习心得(一):java与python变量内存管理机制

写在前面:一直以来通过查看网上各种大牛们的技术博客学习到不少知识,也解答了我不少疑难困惑。今天有感而发,恰逢刚学python,想到之前学习笔记都记到本子上,不方便且容易丢失,故开始博客记录学习心得之旅。

通过查看网上各种资料总结了一波java和python的变量内存管理机制,才疏学浅,如有错误之处请各位大牛批评指正。

Java:
变量有类型之分,分为基本数据类型和引用类型。声明变量时需要声明变量的类型,然后在内存的栈中根据声明的类型开辟一个内存空间。基本数据类型存放数据本身(比如int,直接在栈中存放数据),引用类型存放引用对象的地址。值得注意的是,string类型虽然是引用类型,但(str=”aaaa”)创建的对象是放在堆中的常量池中,函数调用情况类似于python中的不可变类型。

Python:
万物皆对象,包括int等。因此变量没有类型之分,统一存放引用对象的地址。此时变量可分为可变类型(数字,字符串,元祖)与不可变类型。可变类型变量函数调用情况与java中的常量池字符串类似。

函数调用情况:
可以理解为传递了一个原变量的拷贝,python中的不可变类型与java中的常量池字符串类似,在函数中修改变量指向的对象的值,实际上是重新创建一个新对象并修改函数中变量的指向,因此并不会影响原变量的指向。而可变类型与java中其他引用类型相似,修改变量指向的对象的值,等于直接对对象的值进行修改,因此会导致原变量的改变(这里的改变不是指原变量的指向地址改变,而是指向的对象内容的改变)。

转载于:https://www.cnblogs.com/zekaluo/p/7527417.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值