变量赋值的问题,急急

phoenixroc 2005-10-12 12:00:26
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??想了想动态绑定的机制,可还是觉得不是很信服,在此请教,谢谢
...全文
135 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
phoenixroc 2005-10-12
  • 打赏
  • 举报
回复
在static{}中可以做初始化的动作,但不能向前引用
这个说法没错,可和这个题没关系啊,
phoenixroc 2005-10-12
  • 打赏
  • 举报
回复
请,讲的清楚一点,,在线等待呢,我主要就是想问,在一个方法还没初始化的时候,怎么就能用它的返回值进行初始化呢,
yanxiazhiqiu 2005-10-12
  • 打赏
  • 举报
回复
在static{}中可以做初始化的动作,但不能向前引用。
phoenixroc 2005-10-12
  • 打赏
  • 举报
回复
我主要就是想问,在一个方法还没初始化的时候,怎么就能用它的返回值进行初始化呢
superslash 2005-10-12
  • 打赏
  • 举报
回复
在类中
int i=j;
int j=2;这样是不能通过编译的,
为什么象(1)那样能不先声明方法而调用之呢?
superslash 2005-10-12
  • 打赏
  • 举报
回复
To:ChDw(米)
我想楼主主要是问static int i=peek();//(1)
//static int i=j;/////(2)
这个吧?为什么能先调用方法,而不能如(2)那样
star_str 2005-10-12
  • 打赏
  • 举报
回复
int类型的null值是0,初始化时static先初始化,调用peek,此时peek返回0,所以i被初始化为0
ChDw 2005-10-12
  • 打赏
  • 举报
回复
因为Java是按顺序初始化的
所以在执行(1)的时候,j的值还是0
直到static int j=98; j的值才变成98,但是这个时候i已经初始化完了,i的值已经固定成0了
superslash 2005-10-12
  • 打赏
  • 举报
回复
gz
yanxiazhiqiu 2005-10-12
  • 打赏
  • 举报
回复
static 方法和它被调用的位置没关系吧!learning~~

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧