java 前向引用,java – 前向引用和递归

为什么变量可以调用(初始化自身)一个调用相同变量的方法(似乎是一个递归)?我希望看到无休止的递归,但它编译没有错误.任何解释?

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

}

}

另一个例子.为什么在引用j时引用Backwards.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);

}

}

解决方法:

如果您单步执行调试器中的代码,您将看到i = test();只运行一次.

i的先前值为0,这是在初始化i之前返回的值test().

java编译器无法检测每个可能的前向引用,只能检测最简单的前向引用.

标签:java,recursion,reference

来源: https://codeday.me/bug/20190828/1755304.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值