订阅专栏
(1)语法定义上的区别
静态变量用static修饰
实例变量没有static修饰
(2)运行区别,实例区别
静态变量在类中,不属于实例对象,属于类所有,只要程序加载了字节码,不用创建实例对象静态变量就会被分配空间,已经可以使用。
实例变量是某个对象的属性,只有实例化对象后,才会被分配空间,才能使用。
类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果;
而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象;
public class example {
public static void main(String[] args) {
Demo d1 = new Demo();
Demo d2 = new Demo();
}
}
class Demo{
static int i = 1; //类变量(静态变量)
int j = 1; //实例变量
public Demo(){
i++;
j++;
System.out.println(i+":"+j);
}
}
实例变量必须创建对象后,才可以通过这个对象来使用;静态变量则可以直接使用类名来引用(如果实例对象存在,也可以通过实例对象来引用),其实这也可以解释,为什么static修饰的方法不用在实例对象创建后,可以调用。而没有static修饰的方法必须要与对象关联在一起,必须创建一个对象后,才可以在该对象上进行方法调!