在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不用加。
在程序运行时的区别:实例变量属于某个对象定义的属性,必须把对象实例化,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以通过类名被直接调用。总而言之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来调用。
例如,对于下面的代码,静态变量可以用类名直接调用,但是实例变量只能实例化类才能调用
public class TestStatic {
public static int staticVar = 1;
public int instanceVar = 2;
public static void main(String[] args) {
int var1 = TestStatic.staticVar;
TestStatic testStatic = new TestStatic();
int var2 = testStatic.instanceVar;
}
}