题目:编写一个程序,展示无论你创建了某个特定类的多少个对象,这个类中的某个特定static域只有一个实例。
分析:被static修饰的成员是类变量,每个该类的实例都共用这一个类变量。
class test{ public static int a=0; public static void main(String []args){ test t1=new test(); test t2=new test(); test t3=new test(); System.out.println("before add:"); System.out.println("t1.a="+t1.a+"t2.a="+t2.a+"t3.a="+t3.a); t1.a++; System.out.println("after t1.a++:"); System.out.println("t1.a="+t1.a+"t2.a="+t2.a+"t3.a="+t3.a); t2.a++; System.out.println("after t2.a++:"); System.out.println("t1.a="+t1.a+"t2.a="+t2.a+"t3.a="+t3.a); } }
结果:
before add: t1.a=0t2.a=0t3.a=0 after t1.a++: t1.a=1t2.a=1t3.a=1 after t2.a++: t1.a=2t2.a=2t3.a=2
结论:当一个实例的a变化的时候,其他实例的a也跟着变化,因为a是类变量,所有的实例都引用的是一个。