class A
{
   int a;
   static int b;
   void setab(int i)
     {
        a=i;
        b=i+1;
     }
   int getab()
     {
       return a;     
     }
   static void setb(int i)
     {
       b+=i;
     } 
   static int getb()
     {
       return b;
     }
}
public class Exam3_7
{
   public static void main(String args[])
     {
        A x=new A();
        A y=new A();
        x.setab(5);
        y.setab(10);
        System.out.println("x.a="+x.getab()+",y.a="+y.getab());
        x.setb(-5);
        y.setb(-10);
        System.out.println("x.b="+x.getb()+",y.b="+y.getb());
     }
}
就是上面这段程序的结果是:
x.a=5,y.a=10
x.b=-4,y.b=-4而我想不通为什么是这个结果呢,我认为应该是这个结果啊
x.a=5,y.a=10
x.b=6,y.b=-4
高手帮帮忙啊

解决方案 »

  1.   

     与static 有关系呀
    static修饰的成员变量,即静态成员变量被个实例对象共享,而b是静态成员变量,所以对象x,y的b值是一样的
      

  2.   

    public class Exam3_7 

       public static void main(String args[]) 
         { 
            A x=new A(); 
            A y=new A(); 
            x.setab(5); //x.b=6
            y.setab(10); //y.b=11,x.b=11
            System.out.println("x.a="+x.getab()+",y.a="+y.getab()); 
            x.setb(-5); //此时x.b=11+(-5)
            y.setb(-10); //y.b=-4,同时由于b是static的,所以此时x.b发生了变化,x.b=-4
            System.out.println("x.b="+x.getb()+",y.b="+y.getb()); 
         } 
    } 仔细体会一下,你很容易就可以理解的
      

  3.   

    基础 学习了 
    但是   y.b=-4,同时由于b是static的,所以此时x.b发生了变化,x.b=-4 
    内部是怎么具体实现的呀
      

  4.   

    谢谢 Don_Chou
    我明白了  非常感谢!!!!