日期:2014-05-20  浏览次数:20796 次

Java成员函数的使用问题
一串神奇的代码,各位大神们,下面这个程序的结果怎么是零呀?
求原因 :多谢,多谢!
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

------解决方案--------------------
add()里面又新建了一个VarAll对象
显示这个对象的成员num,这个对象的num没操作过,当然是0了
------解决方案--------------------
你调用的是va的show 方法,显示的当然是va中的num值。
而你上面的+100操作是对本对象,即main函数中的va队形进行的,因此输出为0.
不信你将add函数中的va.show()改为show(),输出则该为100.
------解决方案--------------------
add方法中又new了一个新的对象,在调用show方法是是调用的add中new出的对象的show方法,num此时就等于0
------解决方案--------------------
长蛇理解法,

我自己想法,这样你看上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);
}
}




..................

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

不要打击人家学习的积极性。
虽然问题很小白,但是人总是从小白开始的,没有哪个人生来就是大牛的。

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

LZ还须努力啊。碰到问题,尽量自己解决。解决问题的过程,也是学习的过程。
如果碰到自己解决不了的问题,欢迎来提问。