Java中“成员变量,局部变量,静态变量”三者区别说明


转自:

http://java265.com/JavaCourse/202111/1728.html

下文笔者讲述java中成员变量,局部变量,静态变量的不同之处,如下所示:

  成员变量 局部变量 静态变量
定义位置 类中,方法外 方法中,方法的形参 类中,方法外
初始化值 默认初始化值 无,先定义,赋值后使用 默认初始化值
调用方式 对象调用   类名调用
存储位置 堆中 栈中 方法区
生命周期 同对象共存亡 同方法共存亡 同类共存亡
别名 实例变量   类变量

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

成员变量
  1. 成员变量定义在类中,在整个类中都可以被访问
  2. 成员变量随着对象的建立而建立,随着对象的消失而消失,存在于对象所在的堆内存中
  3. 成员变量有默认初始化值
局部变量
  1. 局部变量只定义在局部范围内,如:函数内,语句内等,只在所属的区域有效
  2. 局部变量存在于栈内存中,作用的范围结束,变量空间会自动释放
  3. 局部变量没有默认初始化值

成员变量和静态变量的区别

    1. 两个变量的生命周期不同
      成员变量随着对象的创建而存在,随着对象被回收而释放
      静态变量随着类的加载而存在,随着类的消失而消失
    2. 调用方式不同
      成员变量只能被对象调用
      静态变量可以被对象调用,还可以被类名调用
    3. 别名不同
      成员变量也称为实例变量
      静态变量也称为类变量
    4. 数据存储位置不同
      成员变量存储在堆内存的对象中,所以也叫对象的特有数据
      静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据