成员变量和局部变量的区别?静态变量和实例变量的区别?静态方法和实例方法的区别?

我的未来我决定 提交于 2019-11-30 09:34:25

(成员变量 = 实例变量 + 静态变量)

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

  • 成员变量定义在类中,方法外;局部变量定义在方法中。
  • 成员变量在堆内存中(成员变量属于对象,对象进堆内存);局部变量在栈内存中(局部变量属于方法,方法进栈内存)。
  • 成员变量随着对象的创建而存在,随着对象的消失而消失;局部变量随着方法的调用而存在,随着方法的调用完毕而消失。
  • 成员变量有系统默认的初始化值;局部变量没有默认值,必须定义、赋值,才能使用。
  • java 运行局部变量和成员变量同名,如果成员变量和方法里的局部变量同名,局部变量会覆盖成员变量。如果需要在这个方法里引用被覆盖的成员变量,则可使用 this.(对于实例变量) 或类名.(对于类变量)的方式来访问成员变量。
    在这里插入图片描述

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

  • 静态变量前要加 static 关键字;实例变量不用加。
  • 静态变量直接用类名调用即可;实例变量只能用对象调用。
  • 静态变量存储在方法区的静态存储区,是所有对象共享的;实例变量存储在 Java 堆中,是每个对象私有的。(Java的方法区有个静态存储区,专门存放静态变量和静态块)

静态方法和实例方法的区别?

  • 静态方法带有 static 关键字;实例方法没有 static 关键字。
  • 静态方法直接用类名调用即可;实例方法只能用对象调用。
  • 静态方法只能访问静态成员,不能访问实例成员;而实例方法可以访问静态成员和实例成员。
  • 实例方法可以直接调用静态方法;静态方法不能直接调用实例方法,因为静态方法加载时类还没有实例化。
  • 静态方法是一直存放在内存中,因此调用速度快,但是却占用内存。实例方法使用完成后会由回收机制自动进行回收,下次再使用必须再实例化。
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!