刚学 java,有个小练习不明白,

[code="java"]public class Puzzle4 {
public static void main(String [] args) {
Puzzle4b [] obs = new Puzzle4b[6];
int y = 1;
int x = 0;
int result = 0;
while (x < 6) {
obs [x] = new Puzzle4b();
obs[x].ivar = y;
y = y * 10;
x = x + 1;
}
x = 6;
while (x > 0) {
x = x - 1;
result = result + obs[x].doStuff(x);
}
System.out.println("result " + result);
}
}

class Puzzle4b {
int ivar; //这里没有赋值,请问下面该怎么返回呢?是返回初始值0吗?
public int doStuff(int factor) {
if (ivar > 100) {
return ivar * factor;
}else {
return ivar * (5 - factor);
}
}
}

[/code]
[size=large][color=brown]
输出结果是:result 543345
刚学这个。可能问题有点简单,但是还是盼望好人指点指点。越详细越好,先谢过![/color] [/size] :D

obs[x].ivar = y;已经赋值了。
obs是你定义的一个实例对象,ivar是它的属性;
obs[x].ivar就表示对这个obs[x]对象中属性的引用;
当然obs[x].ivar = y;就是对ivar的赋值了

调试的时候按F6一步一步看看.

[quote]int ivar; //这里没有赋值,请问下面该怎么返回呢?是返回初始值0吗? [/quote]
你上面调用它时不是已经赋值了吗
[quote] obs[x].ivar = y; [/quote]
如果不赋值的话,刚开始好像是随机数,静态的话就是0。

这样的话ivar默认为0,所以你不管doStuff(int factor)填入什么参数,都返回0,
除非你把ivar重新赋值了。

obs[x].ivar = y;
这里不是赋值了吗

我居然翻到可十年前的帖子,互联网是有记忆的~~~~