Ale*_*xis 3 java recursion reference
为什么变量可以调用(初始化自身)一个调用相同变量的方法(似乎是一个递归)?我希望看到无休止的递归,但它编译没有错误.任何解释?
class Forward {
static int test(){
return i;
}
static int i=test();
public static void main(String[] args) {
System.out.println(test()); //sout= 0
System.out.println(i); //sout =0
}
}
Run Code Online (Sandbox Code Playgroud)
另一个例子.为什么在引用时引用Backwards.j工作j会产生错误("非法转发引用"):
class Backwards{
//static int i=j; //illegal forward reference;
static int i=Backwards.j; //reference through class works
static int j=i;
public static void main(String[] args) {
System.out.println(i);
System.out.println(j);
}
}
Run Code Online (Sandbox Code Playgroud)
如果您单步执行调试器中的代码,您将看到i = test();只运行一次.
iis 的前一个值,也就是初始化之前返回0的值.test()i
java编译器无法检测每个可能的前向引用,只能检测最简单的前向引用.
| 归档时间: |
|
| 查看次数: |
82 次 |
| 最近记录: |