Java学习疑点(2)--被static修饰的静态变量与实例变量之间生命周期的区别

9 篇文章 0 订阅

类中成员变量有两种类型,一种是在声明时被static修饰的静态变量(又称为类变量),为该类中每一个实例所共享。另一种叫做实例变量,由每个实例各自单独拥有,在功能上有这样的差异,两者的生命周期以及机制自然有所区别,下面作一总结

 

1,静态变量在Java虚拟机加载类时被创建并为其分配内存,位于方法区,就像类中方法一样被所有类的实例共享。所以其可以直接通过类名访问。当卸载类时静态变量被销毁并撤销所占用的内存。在一定意义上,静态变量的生命周期取决于对应类的生命周期。

 

2,类中每一个实例都有与之对应的实例变量。在创建类实例时,Java虚拟机会为实例变量分配特定的内存与该实例对应,实例变量储存在堆中。实例变量的生命周期取决于对应实例的生命周期,当创建实例的时候,实例变量被创建并分配内存,当销毁实例的时候,实例变量被销毁并撤销所占内存。

 

当成员变量(包括静态变量和实例变量)为引用类型时,该变量结束生命周期时,并不一定意味着它所引用的对象的生命周期也同时结束。

变量的生命周期和对象的生命周期是不同的概念,两者不可以混淆。

记住静态变量是属于整个类共享的,而实例变量属于特定的实例,两者结构和功能上的体现了面向对象编程的一个特性。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值