题目:编写一个程序,展示无论你创建了某个特定类的多少个对象,这个类中的某个特定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是类变量,所有的实例都引用的是一个。