class koB{
   static int a;
   public void display(){
   System.out.print(" a="+a);
  }
 }
 public class classVar{
      public static void main(String args[]){
       koB a1=new koB(); a1.a=10;
       koB a2=new koB(); a2.a=20;
       koB.a=50;
       a1.display();  a2.display();
     }
}
为什么输入是两个 50  怎么才能输出 10和20

解决方案 »

  1.   

    类中的静态的变量,在该类的所有对象中,引用的都是同一个内存地址。你最后一次是赋值为50 ,a1和a2的a属性都是引用的同一个地址的,所以都是50 这个很正常。可以这样说,static变量是不属于类的对象的,而是属于这个类的。要输出10和20的方法很简单,你定义   int a 即可,不要定义为静态变量.
      

  2.   

    static int a;//去掉前面的static
    你要一个koB.a做什么啊?
    这一行你要用么?
      

  3.   

    去掉静态变量修饰符static就行了,很简单的,参见1楼的解释。