class pj35 {
static int i=peek();//(1)
//static int i=j;/////(2)
static int peek(){
return j;
}
static int j=98;
static int t=j;
public static void main(String [] args){
pj35 pj=new pj35();
System.out.println(pj.i);//i==0;(3)
}
}
在这个类中,(2)式是不能通过编译,这似乎很好理解,但对于(1)的正确,以及(1)和(2)
的区别,就不理解了,在(3)式中i的值还是0??想了想动态绑定的机制,可还是觉得不是很信服,在此请教,谢谢
static int i=peek();//(1)
//static int i=j;/////(2)
static int peek(){
return j;
}
static int j=98;
static int t=j;
public static void main(String [] args){
pj35 pj=new pj35();
System.out.println(pj.i);//i==0;(3)
}
}
在这个类中,(2)式是不能通过编译,这似乎很好理解,但对于(1)的正确,以及(1)和(2)
的区别,就不理解了,在(3)式中i的值还是0??想了想动态绑定的机制,可还是觉得不是很信服,在此请教,谢谢
所以在执行(1)的时候,j的值还是0
直到static int j=98; j的值才变成98,但是这个时候i已经初始化完了,i的值已经固定成0了
我想楼主主要是问static int i=peek();//(1)
//static int i=j;/////(2)
这个吧?为什么能先调用方法,而不能如(2)那样
int i=j;
int j=2;这样是不能通过编译的,
为什么象(1)那样能不先声明方法而调用之呢?
这个说法没错,可和这个题没关系啊,