public class Demo {
private static int a;
private int b;
public Demo(){
a++;
b++;
System.out.println("a="+a+",b="+b);
}
public static void main(String[] args) {
Demo c= new Demo();
Demo c1=new Demo();
}
运行结果
a=1,b=1
a=2,b=1
Java中静态变量和实例变量的区别
静态变量a是属于整个类的,只要程序加载了类的字节码,不需要创建任何实例对象,静态变量就会被分配空间,静态变量就可以使用了,无论创建多少个实例对象,永远只分配一个a变量,并且每创建一个实例对象,a就会加1.
实例变量是属于某个对象的属性,必须创建实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量,就是说每创建一个实例对象,就会分配一个b,实例对象之间b是互不影响的,所以就可以解释为什么输出的值是相同的
一句话总结来说,实例变量必须创建对象后才可以使用,而静态变量可以直接使用类名来引用(如果实例对象存在,也可以通过实例对象来引用)
其实,这也可以解释,为什么static修饰的方法不用在实例对象创建后,可以调用。而没有static修饰的方法必须要与对象关联在一起,必须创建一个对象后,才可以在该对象上进行方法调用。