Java 变量(h1)超出范围?
在一个问题中,答案是“编译失败”,因为在go中,方法h1超出了范围。h1在我看来是公开的,有人能解释一下为什么它超出了范围吗?方法何时可以访问其他变量Java 变量(h1)超出范围?,java,scope,Java,Scope,在一个问题中,答案是“编译失败”,因为在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.pr
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;
}
}
这一行定义了
Happy h1 = new Happy(1);
这在main(字符串[]args)
这就是为什么您不能在main的{
}
之外访问它
Happy go(Happy h) {
Happy h3 = h;
h3.id = 2;
h1.id = 3;
return h1;
}
上述方法中使用的h1超出范围
您正在main方法中创建h1对象,但试图在go方法中访问它,而h1不可见
您可以按如下方式使用:
static Happy h1 = new Happy(1);
public static void main(String [] args) {
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;
}
main中声明的任何内容都不能在其他任何地方访问?有办法访问main中声明的对象吗?@mc805您可以访问
main()
中声明的对象,方法是在对象可以访问的范围内的某个地方传递它们。@mc805在您的例子中,您已经这样做了,因为h
和h3
指向main中的对象h1
,因为您传递了对它的引用。@mc805 main()所有的东西都可以访问,但是局部变量只是局部的,并且它所在的方法也可以访问。现在肯定有意义了。。。ThanksGivenh1
是这个
和h
在go
中可能也不需要将其添加为静态
。)