Java 变量类型
Java变量类型有 局部变量, 成员变量(实例变量), 静态变量
局部变量
变量声明
-
局部变量声明在方法,构造方法或者代码块中
-
访问修饰符不能用于局部变量
public void demo() { int a = 1; System.out.println(a); }
初始化
局部变量没有默认值,所以局部变量被声明后必须经过初始化才能被使用
作用域
- 局部变量只在声明它的方法,构造方法或者代码块中可见
生命周期
- 局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁;
存储位置
- 局部变量存在栈上分配
成员变量(实例变量)
变量声明
-
成员变量声明在类中,方法,构造方法,代码块外面
-
访问修饰符可以修饰成员变量
-
实例变量可以声明在使用前或者使用后(建议在使用前)
public class A { private int a; }
初始化
成员变量具有默认值, 成员变量的值可以在声明时指定,也可以在构造方法中指定
- 数值型变量的默认值是0
- 布尔型变量默认是false
- 引用类型变量默认是null
作用域
- 实例变量的值应该至少被一个方法、构造方法或代码块引用,使外部能够通过这些方式获取实例变量信息
- 实例变量对于类中的方法、构造方法或代码块是可见的。一般情况下应该把实例变量设为私有,通过构造方法获取成员变量的值或对它进行赋值
生命周期
- 成员变量在对象创建的时候创建,在对象被销毁的时候销毁
存储位置
- 成员变量在堆上分配
访问
- 实例模块可以直接通过变量名访问(非静态方法,不包括main方法 )
- 在静态方法中(包括mian方法),应该通过全限定名访问
静态变量
变量声明
- 静态变量声明在类中,方法外
- 类变量被声明为public static final类型时,类变量名称一般建议使用大写字母
- 静态变量除了被声明为常量外很少使用。
- 常量是指声明为public/private,final和static类型的变量。
- 常量初始化后不可改变
初始化
成员变量具有默认值, 成员变量的值可以在声明时指定,也可以在构造方法中指定,还可以在静态代码块中初始化
- 数值型变量默认值是0
- 布尔型默认值是false
- 引用类型默认值是null
作用域
- 实例变量对于类中的方法、构造方法或代码块是可见的
- 但为了对类的使用者可见,大多数静态变量声明为public类型
生命周期
- 静态变量在程序开始时创建,在程序结束时销毁
存储位置
- 静态变量存储在方法区
三种变量之间的区别
局部变量 | 成员变量 | 静态变量 | |
---|---|---|---|
定义位置 | 方法中,或者方法的形式参数 | 类中,方法外 | 类中,方法外 |
初始化值 | 没有默认值,定义赋值后才能使用 | 有默认初始化值 | 有默认初始值 |
调用方式 | 只能在方法内部使用 | 对象调用 | 对象调用 |
存储位置 | 栈 | 堆 | 方法区 |
生命周期 | 与方法共存亡 | 与对象共存亡 | 与类共存亡 |
别名 | 实例变量 | 类变量 |