永发信息网

由于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;

}
主方法执行那是之后做的事了。
全部回答
  • 1楼网友:西岸风
  • 2021-03-28 09:49
静态代码是属于类的,类在他在,类亡他亡
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯