class A {
int a=b;
int b;
}会出现前向引用错误,为什么呢?
根据Thinking in JAVA的说法,初始化顺序是先将对象所有基本类型设成默认的,然后开始字段定义处的初始化,然后构造方法在上面那个例子里,由于对象的所有基本类型已经是默认的(a,b此时都是0),然后在进行字段定义处的初始化a=b时,b这时候的值是0,应该是可以赋值给a的,为什么不行呢?谢谢~
int a=b;
int b;
}会出现前向引用错误,为什么呢?
根据Thinking in JAVA的说法,初始化顺序是先将对象所有基本类型设成默认的,然后开始字段定义处的初始化,然后构造方法在上面那个例子里,由于对象的所有基本类型已经是默认的(a,b此时都是0),然后在进行字段定义处的初始化a=b时,b这时候的值是0,应该是可以赋值给a的,为什么不行呢?谢谢~
ps:楼主的id:ultrasurf --------- 无界? 哈哈
如果把a=b改成调用下面的函数int a=fun()
int b;int fun()
{ return b; }此时返回的是b默认的0. 但如果是int a=fun(b)
int b;int fun(int b)
{ return 10; }就不行,还是前向引用错误...只要a=后面有b的都不行我猜是不是为了和局部变量统一有关系?因为局部变量是不会自动设成默认的,这么设计对于局部变量还是可以理解的