全局变量(成员变量),局部变量,静态变量的区别
全局变量(成员变量),局部变量,静态变量:
-
全局变量(成员变量):
1.全局变量定义在类中,在整个类中都可以被访问
2.全局变量有默认的初始化值
3.全局变量随着对象的建立而建立,随着对象的消失而消失,存在于对象所在的堆内存中 -
局部变量:
1.局部变量定义在局部范围内:如方法,函数,语句中,只在作用域有效
2.局部变量没有默认初始化值
3.局部变量存在于栈内存中,作用的范围结束,变量空间会自动释放 -
静态变量:
用static关键字修饰的变量,被所有对象所共享 -
成员变量与静态变量的区别:
- 声命周期不同
成员变量随对象创建而创建,随对象销毁而销毁
静态变量随类加载而加载,随类消失而消失 - 调用方式不同
成员变量只能被对象调用
静态变量可以被对象调用,也可以被类名调用 - 别名不同
成员变量也称为实例变量。
静态变量也称为类变量。 - 数据存储位置不同
成员变量存储在堆内存的对象中,所以也叫对象的特有数据。
静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据。
- 声命周期不同
-
列表对比:
成员变量、局部变量、静态变量的区别
全局变量 | 局部变量 | 静态变量 | |
---|---|---|---|
定义位置 | 在类中,方法外 | 方法中,或者方法的形式参数 | 在类中,方法外 |
初始化值 | 有默认初始化值 | 无,先定义,赋值后才能使用 | 有默认初始化值 |
调用方式 | 对象调用 | 对象调用,类名调用 | |
存储位置 | 堆中 | 栈中 | 方法区 |
生命周期 | 与对象共存亡 | 与方法共存亡 | 与类共存亡 |
别名 | 与方法共存亡 | 类变量 |