java局部变量、实例变量、静态变量辨析

根据声明位置的不同,我们一般可以将java的变量分为两个类型:成员变量局部变量

变量的分类

成员变量是指声明在类中、类方法之外的变量,包括:

  • 实例变量: 无static修饰。
  • 类变量(静态变量):有static修饰。
    局部变量是指声明在类方法中的变量,包括:
  • 方法参数变量:也就是形参。
  • 方法局部变量:声明在方法体{}内,方法体嵌套的代码块外。
  • 代码块局部变量:声明在方法体嵌套的代码块内。

各种变量的特征

接下来用一个表格阐述一下这5种类型的变量各自的特征。

声明/定义方式作用域&生命周期访问权限默认值&初始化内存分配
方法参数变量方法形参方法执行时创建,执行完释放方法体内可见无,必须明确初始化栈区(java虚拟机栈)
方法局部变量方法体{}内方法执行时创建,执行完释放方法体内可见无,必须明确初始化栈区(java虚拟机栈)
代码块局部变量方法体内的某个代码块{}内代码块执行时创建,执行完释放代码块内可见无,必须明确初始化栈区(java虚拟机栈)
实例变量类中,方法体外对象创建时创建,对象销毁时释放由修饰符决定有,引用类型为null,基本数据类型为java预定义的默认值随对象一起分配在堆上
静态变量类中,方法体外,带static修饰符类加载时创建,类卸载时销毁由修饰符定有,引用类型为null,基本数据类型为java预定义的默认值方法区(静态存储区)