一串神奇的代码,各位大神们,下面这个程序的结果怎么是零呀?
求原因 :多谢,多谢!
class VarAll
 {
  private int num=0;
  VarAll va;
  public void add()
  {
  int a;
  va=new VarAll();
  for(a=0;a<100;a++)
  {
  num=num+1;
  }
  va.show();
  }
  public void show()
  {
  System.out.println("num="+num);
  }
  public static void main(String[] args)
  {
  VarAll va=new VarAll();
  va.add();
  }
 }java

解决方案 »

  1.   

    add()里面又新建了一个VarAll对象
    显示这个对象的成员num,这个对象的num没操作过,当然是0了
      

  2.   

    你调用的是va的show 方法,显示的当然是va中的num值。
    而你上面的+100操作是对本对象,即main函数中的va队形进行的,因此输出为0.
    不信你将add函数中的va.show()改为show(),输出则该为100.
      

  3.   

    add方法中又new了一个新的对象,在调用show方法是是调用的add中new出的对象的show方法,num此时就等于0
      

  4.   

    长蛇理解法,我自己想法,这样你看上2圈就会自己推第3圈了,也就理解了
    public class VarAll
    {
    private int num = 0;

    VarAll1111111111111111111111 va1111111111111111111111; public void add()
    {
    int a;

    va1111111111111111111111 = new VarAll1111111111111111111111();

    for (a = 0; a < 100; a++)
    {
    num = num + 1;
    }


    va1111111111111111111111.show();

    } public void show()
    {
    System.out.println("num=" + num);
    } public static void main(String[] args)
    {
    VarAll va = new VarAll();
    va.add();
    }
    }class VarAll1111111111111111111111
    {
    private int num = 0;

    VarAll222222222222222222 va222222222222222222; public void add()
    {
    int a;

    va222222222222222222 = new VarAll222222222222222222();

    for (a = 0; a < 100; a++)
    {
    num = num + 1;
    }


    va222222222222222222.show();

    } public void show()
    {
    System.out.println("num=" + num);
    }
    }
    class VarAll222222222222222222
    {
    private int num = 0;

    VarAll33333333333333333333 va33333333333333333333; public void add()
    {
    int a;

    va33333333333333333333 = new VarAll33333333333333333333();

    for (a = 0; a < 100; a++)
    {
    num = num + 1;
    }


    va33333333333333333333.show();

    } public void show()
    {
    System.out.println("num=" + num);
    }
    }
    ..................
      

  5.   

    有时间多自己学习不要出个什么问题都跑来这里问,看你这问题你没写过代码的吧,java中对象,属性,方法的概念你都没弄清楚