说说静态变量和实例变量的区别?

255 阅读1分钟

分析&回答

可见范围

  • 成员变量只能被对象所调用 。静态变量可以被对象调用,也可以被类名调用。
  • 静态变量前要加static关键字,而实例变量前则不加。

存储不同

  • 成员变量数据存储在堆内存的对象中,所以也叫对象的特有数据。
  • 静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据

生命周期不同

  • 成员变量与对象共存亡,随着对象创建而存在,随着对象被回收而释放
  • 静态变量与类共存亡,随着类的加载而存在,随着类的消失而消失(类不消失一直存在(不考虑回收机制),生命周期长)

反思&扩展

注意:成员变量(静态和非静态)、字符串常量池由方法区迁移到堆。

成员变量与局部变量的区别?

  • 成员变量的作用域是在类中;局部变量的作用域是在方法中
  • 成员变量可以不赋初值;局部变量必须赋初值

喵呜面试助手: 一站式解决面试问题,你可以搜索微信小程序 [喵呜面试助手] 或关注 [喵呜刷题] -> 面试助手 免费刷题。如有好的面试知识或技巧期待您的共享!