public class B {
    static int aVar1;
    int aVar2;
    public B(int Var1, int Var2){
        aVar1 = Var1;
        aVar2 = Var2;
    }
}public class Test {
    public static void main(String[] args) {
B test1 = new B(1, 2);
B test2 = new B(3, 4);
System.out.println(test1.aVar1);
System.out.println(test1.aVar2);
System.out.println(test2.aVar1);
System.out.println(test2.aVar2);
    }}
________________________________________________________程序输出结果是:
3
2
3
4请问各位高手们为什么1没有了?

解决方案 »

  1.   

    就因为aVar1是静态变量啊。全局就一个aVar1
    你在第二个B()里面,修改了它的值,它以后都是这个了
      

  2.   

    在你原来的代码上我只改了一点。 
    测试下面的代码就知道原因了: 
    public class aaa {
        static int aVar1;
        int aVar2;
    public aaa(int Var1, int Var2) {
    aVar1 = Var1;
    System.out.println("aVar1");
    aVar2 = Var2;
    System.out.println("aVar2");
    // TODO Auto-generated constructor stub
    } /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
         aaa test1 = new aaa(1,2);
         System.out.println("test1: "+aaa.aVar1);
         aaa test2 = new aaa(3,4);
         System.out.println("test1: "+ aaa.aVar1);
         System.out.println("test1: "+ test1.aVar2);
         System.out.println("test2: "+ aaa.aVar1);
         System.out.println("test2: "+ test2.aVar2);
    }}
      

  3.   

    结合 whysdhr(费那事干嘛!一锤子砸下去不就完了吗!)  的文解。。
    下一个3 把 aVar1的存储值改变了。
      

  4.   

    这个是上面运行后的结果:
    aVar1
    aVar2
    test1: 1
    aVar1
    aVar2
    test1: 3
    test1: 2
    test2: 3
    test2: 4
      

  5.   

    aVar1是静态变量  所有对象共享