日期:2014-05-20  浏览次数:20623 次

5行代码求解释
public class Test01 {
  {
  b = 5 ;
  a = b + 1 ;
  }
  int a ;
  int b ;
}
----------------------------------
以上代码a=b+1;报错,说b未定义。求解释。此贴的前贴请参见:
http://topic.csdn.net/u/20120705/15/ea3af978-8b08-4d9d-9553-1e0a18548e2c.html



------解决方案--------------------
探讨
针对此再次提问:上述代码我修改如下,结果还是编译出错。
public class Test01 {
{
b = 5 ;
a = b + 1 ;
}
int a ;
int b ;
}

------解决方案--------------------
我引用的这个页面的内容,里面特别举了和你一样的例子,你自己再看一下吧
[link=http://www.xyzws.com/Javafaq/what-are-the-forward-reference-rules/9][/link]
------解决方案--------------------
有意思
看起来代码其实是没有什么问题,看看class的字节码,为了能顺利通过编译,我将int b的声明语句上移,int a的位置不动。
Java code

public class test {
    int b ;
  {
  b = 5 ;
  a = b + 1 ;
  }
  
  int a ;
}