(成员变量 = 实例变量 + 静态变量)
成员变量和局部变量的区别?
- 成员变量定义在类中,方法外;局部变量定义在方法中。
- 成员变量在堆内存中(成员变量属于对象,对象进堆内存);局部变量在栈内存中(局部变量属于方法,方法进栈内存)。
- 成员变量随着对象的创建而存在,随着对象的消失而消失;局部变量随着方法的调用而存在,随着方法的调用完毕而消失。
- 成员变量有系统默认的初始化值;局部变量没有默认值,必须定义、赋值,才能使用。
- java 运行局部变量和成员变量同名,如果成员变量和方法里的局部变量同名,局部变量会覆盖成员变量。如果需要在这个方法里引用被覆盖的成员变量,则可使用 this.(对于实例变量) 或类名.(对于类变量)的方式来访问成员变量。
静态变量和实例变量的区别?
- 静态变量前要加 static 关键字;实例变量不用加。
- 静态变量直接用类名调用即可;实例变量只能用对象调用。
- 静态变量存储在方法区的静态存储区,是所有对象共享的;实例变量存储在 Java 堆中,是每个对象私有的。(Java的方法区有个静态存储区,专门存放静态变量和静态块)
静态方法和实例方法的区别?
- 静态方法带有 static 关键字;实例方法没有 static 关键字。
- 静态方法直接用类名调用即可;实例方法只能用对象调用。
- 静态方法只能访问静态成员,不能访问实例成员;而实例方法可以访问静态成员和实例成员。
- 实例方法可以直接调用静态方法;静态方法不能直接调用实例方法,因为静态方法加载时类还没有实例化。
- 静态方法是一直存放在内存中,因此调用速度快,但是却占用内存。实例方法使用完成后会由回收机制自动进行回收,下次再使用必须再实例化。
来源:CSDN
作者:喵了个咪的回忆丶
链接:https://blog.csdn.net/dl674756321/article/details/103245625