当我们尝试这段代码时,它不能工作。
public class f {
public static void main(String[] args) {
{ // aussen
int a = 1;
int b = 2;
{ // innen
System.out.println(a);
// gibt 1 aus
int b = 3;
System.out.println(b); // gibt 3 aus
}
}
}
}
但是我们的教授。说在内部作用域中可以再次声明变量,并且这个内部声明在变量b的内部作用域中使用。但在互联网上的http://www.mathcs.emory.edu/~cheung/Courses/170/Syllabus/08/scope.html上,在“具有相同名称的变量r发生在内部作用域内”下,我们发现我们的错误是合法的。在过去的9年里,这种情况发生了变化吗?
发布于 2018-10-18 03:45:42
这一点没有改变。Java就是这样设计的。局部变量不能被同一函数中定义的其他变量遮蔽。原因是一致性,所有外部变量对内部作用域也是可见的。
这是Java工作方式不同于C和C++的一种情况,后者允许同一函数中的变量相互遮蔽。
https://stackoverflow.com/questions/52862427
复制相似问题