由于JVM在加载类时会执行静态代码块,所以静态代码块先于主方法执行,这个加载如何理解呢
答案:2 悬赏:70 手机版
解决时间 2021-03-28 19:57
- 提问者网友:轮囘Li巡影
- 2021-03-28 07:53
由于JVM在加载类时会执行静态代码块,所以静态代码块先于主方法执行,这个加载如何理解呢
最佳答案
- 五星知识达人网友:酒醒三更
- 2021-03-28 08:32
静态代码块是在初始化(clinit())时执行的,也是类加载的最后一步,clinit() 方法是由编译器自动收集类中所有类变量的赋值动作和静态语句块(static{}块)中的语句合并产生的,编译器收集顺序是由语句在源文件中出现的顺序所决定的;静态语句块只能访问到定义在静态语句块之前的变量,在它之后的变量,在静态语句块之前只能赋值不能访问。
如:
class Test {
static {
i = 0;
System.out.println(i); // 此处编译时会报错
}
static int i = 1;
}
主方法执行那是之后做的事了。
如:
class Test {
static {
i = 0;
System.out.println(i); // 此处编译时会报错
}
static int i = 1;
}
主方法执行那是之后做的事了。
全部回答
- 1楼网友:西岸风
- 2021-03-28 09:49
静态代码是属于类的,类在他在,类亡他亡
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯