classForwardReference{{//System.out.println(age);//compileerrorage=22;}intage=21;}classForwardReference02{//intfirst=second;//Can'tmakeforwardrefencecetosecondinclassinta...
class ForwardReference{
{
// System.out.println(age);//compile error
age=22;
}
int age=21;
}
class ForwardReference02{
//int first=second; //Can't make forward refencece to second in class
int accessTooSoon(){
return second;
}
int first=accessTooSoon();
int second=1;
}
先来分析ForwardReference: ForwardReference是这样初始化的 首先声明变量int age; 并赋于缺省值(0)此时age=0;
然后执行实例块
{
System.out.println(age); //1处
age=22;
}
按我自己的想法是 System.out.println(age); 应该输出0 然后将age赋值为22
最后又将age赋值为21 但是结果1处却不能compile, cause by:forward refencece
再来分析ForwardReference02:ForwardReference02是这样初始化的 首先按照代码先后顺序
声明变量int first , int second; 并赋于缺省值(0)此时first=0,second=0;
然后执行赋值操作
int first=accessTooSoon(); //调用accessTooSoon()返回second值0 此时first=0
int second=1; //将second赋值为1
通过对比
我的疑惑就是在1处?为什么会出现 forward refencece error(难道问题出现在 实例块 实例方法 这两者之间)
我分析错误了?谁能替我解忧?
展开