一串神奇的代码,各位大神们,下面这个程序的结果怎么是零呀?
求原因 :多谢,多谢!
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中对象,属性,方法的概念你都没弄清楚
------解决方案--------------------
不要打击人家学习的积极性。
虽然问题很小白,但是人总是从小白开始的,没有哪个人生来就是大牛的。
这是正解
LZ还须努力啊。碰到问题,尽量自己解决。解决问题的过程,也是学习的过程。
如果碰到自己解决不了的问题,欢迎来提问。