有关类加载的 问题

Jales 2007-12-07 11:31:33
在一个类A中有static属性,和一个静态代码块,在虚拟机加载这个类的时候是先初始化静态属性??还是先执行静态代码块??
...全文
101 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
kingquake21 2007-12-10
  • 打赏
  • 举报
回复
看先后顺序,哪个在前先执行哪个。
1楼luffyday的说法完全正确。
static int value = 100;
static { System.out.println( Main.value) ;}
结果是100

static { System.out.println( Main.value) ;}
static int value = 100;
结果是0
joejoe1991 2007-12-09
  • 打赏
  • 举报
回复
自己写个类测试一下不就行了么。
public class ThreadTest{
public static void main(String[] args) {

}

public static int a = getValue();

public static int getValue() {

System.out.println("getValue()...");
return 10;
}
static {
System.out.println("static{}....");
}
}
loading321 2007-12-08
  • 打赏
  • 举报
回复
先执行的是static的静态代码块,
因为执行每个类之前都是先执行静态代码块,再进入类实例化!
这个答案一定对,给分,收工!!!
jxcfh 2007-12-07
  • 打赏
  • 举报
回复
在加载类时。static属性和static块是按照在类中出现的先后顺序来执行的。即static属性在定义static代码块前出现则先初始化静态属性。反之亦然
霜之哀伤 2007-12-07
  • 打赏
  • 举报
回复
静态属性。
luffyday 2007-12-07
  • 打赏
  • 举报
回复
首先找到类中的所有静态声明语句(不管位置在哪),把他们初始化为缺省值
然后再按照书写顺序依次处理每一个static的东西
把对象属性初始化为缺省值
按照书写顺序依次处理每一个对象属性的初始化语句
最后执行构造函数

62,623

社区成员

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

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