达人帮看看x=0,why?

franky82 2006-12-24 10:59:10
public class MyClass {

private static int x = getValue();
private static int y = 5;
private static int getValue() {
return y;
}

public static void main(String args[]) {
System.out.println(x); // //x=0,why?
}
}
// //x=0,why?
...全文
351 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
shine333 2007-01-05
  • 打赏
  • 举报
回复
private static int x;
private static int y;
static {
x = getValue();
y = 5;
}
Nuage 2007-01-05
  • 打赏
  • 举报
回复
呵呵!UP
franky82 2006-12-30
  • 打赏
  • 举报
回复
严重的谢谢各位
myzee 2006-12-29
  • 打赏
  • 举报
回复
把先定义y的值在定义x就可以了
zuoky 2006-12-29
  • 打赏
  • 举报
回复
楼上的,受教了,感谢!
welshem 2006-12-25
  • 打赏
  • 举报
回复
你的代码等价于:
public class MyClass {
private static int x;
private static int y;
static {
x=0;
y=0;
x=getValue();
y=5;
}
private static int getValue() {
return y;
}

public static void main(String args[]) {
System.out.println(x);
}
}
RainRainbow 2006-12-25
  • 打赏
  • 举报
回复
ls的说的对头,在getValue()中加个System.out.println(y);就可以知道执行顺序了
务必搞定 2006-12-25
  • 打赏
  • 举报
回复
类的静态成员的赋值是按排列顺序的,在还没有对静态成员赋值前先赋予它默认值(int类型默认为0)

在运行到private static int x = getValue(); 时,调用getValue()方法,但此时y还没有正式被赋予5,y此时的值时0,于是x得到的值时0
syhan 2006-12-24
  • 打赏
  • 举报
回复
很简单,类初始化的时候将静态变量初始化为0,也就是说根本没有执行getValue()

51,397

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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