我需要解释何时使用类变量?

时间:2012-02-11 00:10:41

标签: java

假设我们有一个类:

public class test { 
  int a=1;
  static int b=1;

  public int getA()
  {
    return a;
  }

  public void incrementA()
  {
    a++;
  }

  public void incrementB()
  {
    b++;
  }

  public int getB()
  {
    return b;
  }
}

我有一个像这样的主要方法的课程

public class testmain {
  /**
  * @param args
   */
  public static void main(String[] args) {
    // TODO Auto-generated method stub

    test t= new test();
    t.incrementA();

    test t1= new test();

    test t2= new test();
    t2.incrementB();    

    test t3 = new test();

    test t4= new test();
    t4.incrementB();

    System.out.println("t= "+t.getA());
    System.out.println("t1= "+t1.getA());
    System.out.println("t4= "+t4.getB());
    System.out.println("t3= "+t3.getB());
    System.out.println("t2= "+t2.getB());       
  }
}

我需要解释为什么tt1具有不同的a值,所有t2t3t4都有b的值相同。我知道我已将b声明为静态,并且所有对象都访问该变量b的相同地址。为什么当每个对象都有自己的a时,它不会对变量造成任何问题,现在我的问题是因为所有对象都在内存中看到相同的位置,为什么a每个对象的值都不同对象

2 个答案:

答案 0 :(得分:1)

每个对象都有自己的a样本。所以有与对象一样多的东西

答案 1 :(得分:0)

类(静态)变量值将可访问该类的多个实例,在本例中为t ... t4。

当您使用t.b(或)t4.b(或)test.b(或)使用t..t4的任何方法更改'b'时 - >相同的'b'值将被更新,因为这些值中只存在一个'b'副本。

实例变量特定于该实例。 'a'存在每个实例的副本t ... t4。

阅读此link 了解详情。