在答案是“编译失败”的问题中,因为在go方法中h1超出了范围。 h1对我来说是公开的,有人可以解释为什么它超出范围?方法何时可以访问其他变量?
public class Happy {
int id;
Happy(int i) { id = i; }
public static void main(String [] args) {
Happy h1 = new Happy(1);
Happy h2 = h1.go(h1);
System.out.println(h2.id);
}
Happy go(Happy h) {
Happy h3 = h;
h3.id = 2;
h1.id = 3;
return h1;
}
}
答案 0 :(得分:0)
此行定义
Happy h1 = new Happy(1);
这属于main(String[] args)
这就是为什么你无法在主{
}
之外访问它。
答案 1 :(得分:0)
posCount
上述方法中使用的h1超出了范围。
您正在main方法中创建h1对象,但尝试在go方法中访问它,其中h1不可见。
您可以像下面这样使用它: -
Happy go(Happy h) {
Happy h3 = h;
h3.id = 2;
h1.id = 3;
return h1;
}