Java变量类型
Java支持的变量类型:
* 静态变量(类变量):独立于方法之外的变量,用static
修饰
* 对象变量(实例变量、类成员变量):独立于方法之外的变量
* 局部变量:类的方法中的变量
public class Variable{
static int allClicks=0;//类变量
String str="Hello World";//类成员变量
public void method(){
int i=0;//局部变量
}
}
局部变量
- 访问修饰符不能用于局部变量
- 局部变量只在声明它的方法、构造方法或语句块中可见
- 局部变量是在栈上分配的
- 局部变量没有默认值。局部变量被声明后,必须经过初始化才能使用。
对象变量(实例变量、类成员变量)
- 类成员变量声明在一个类中,但在方法、构造方法和语句块之外。
- 当一个对象被实例化,每个类成员变量的值便确定
- 类成员变量在对象创建的时候创建,在对象被销毁的时候销毁
- 类成员变量可以声明在使用前或使用后
- 访问修饰符可以修饰类成员变量
- 类成员变量具有默认值。
数值型变量:0
Boolean型:false
引用型变量:null - 类成员变量的值可以在声明时指定,也可以在构造方法中指定
- 类成员变量可以直接通过变量名访问。但在静态方法及其他类中,应使用完全限定名。
静态变量(类变量)
- 以
static
关键字声明,必须在方法、构造方法、语句块之外。 - 无论一个类创建了多少个对象,类只拥有静态变量的一份拷贝。
- 静态变量储存在静态存储区。
- 静态变量在程序开始时创建,在程序结束时销毁。
- 具有默认值。
数值型:0
Boolean:false
引用型:null - 变量的值可以在声明时初始化,也可以在构造方法中初始化,还可以在静态语句块中初始化。
- 静态变量可以通过
ClassName.VariableName
方式访问。 - 静态变量被声明为
public static final
时,类变量名称一般大写。
若是其他情况,与普通变量命名方式一致。
对比
静态变量(类变量) | 对象变量(类成员变量、实例变量) | 局部变量 | |
---|---|---|---|
定义位置 | 类中,方法外 | 类中,方法外 | 方法中或方法的形参 |
初始值 | 有默认初始值 | 有默认初始值 | 无,先定义,赋值后使用 |
调用方式 | 对象调用,类名调用 | 对象调用 | —— |
存储位置 | 方法区 | 堆 | 栈 |
生命周期 | 与类共存亡 | 与对象共存亡 | 与方法共存亡 |