Java变量类型

在Java语言中,所有的变量在使用前必须提前声明。

Java语言支持的变量类型有三种:

  • 类变量:类中,方法体外,用static关键字修饰的变量,也叫静态变量
  • 实例变量:类中,方法体外,没有static关键字修饰
  • 局部变量:类中,方法体中的变量
public class Main{
    // 类变量/静态变量
    static int a = 10;
    // 实例变量
    int b = 20;
    public static void main(String[] args){
        // 局部变量
        int c = 30;
    }
}

以下,我们根据作用域从小到大介绍

Java局部变量

  • 位置:方法、构造方法或语句块中
  • 生命周期:方法、构造方法或语句块被执行时创建,该条方法执行完后被销毁
  • 不可以使用访问修饰符
  • 作用域:局部变量只在声明它的方法、构造方法或语句块中可用
  • 内存位置:JVM的虚拟机栈中
  • 默认值:局部变量没有默认值,必须赋值后才能使用

Java实例变量(成员变量)

  • 位置:类中,方法体外
  • 生命周期:和创建的类实例声明周期一致,在实例被创建时初始化,在实例被垃圾回收时跟随类实例被回收
  • 实例变量可以声明在使用前或者使用后
  • 作用域:根据使用的访问修饰符不同而不同,通常使用private关键字将类的实例变量私有化,仅在类内部可见,在类内部构建方法操作实例变量
  • 内存位置:引用地址存放在虚拟机栈中,变量实例存放在跟随类实例存放在堆中
  • 默认值:整型0,布尔型false,引用类型null
  • 访问方式:可以直接通过变量名访问,但在静态方法和其它类中,使用类.变量名访问

Java类变量(静态变量)

  • 类变量也叫静态变量,在类中、方法体外,用static关键字修饰
  • 声明周期:在类加载阶段,类的字节码被加载到JVM中,该类的静态变量就会初始化,存放在方法区中,静态变量的声明周期取决于类的声明周期,类被卸载时,静态变量被销毁,并释放内存空间,通常在程序结束时被销毁。
  • 作用域:与实例变量有相似的可见性,但是为了类的使用者可见,大多数静态变量声明为public类型。
  • 默认值:与实例变量一样。
  • 访问方式:类名.变量名