解释一下static块和static变量的执行顺序
例子:
public class Demo{
public static int i;
static{
i = 20;
//这里的i, 是可以被用作运算的。
}
}
这时候如果你在main函数输出i, 那么i=20;
public class Demo{
static{
i = 20;
//这里的i, 是不能被用作运算的, 因为本质上 i 还未被定义
}
public static int i;
}
这时候如果你在main函数输出i, 那么i=20;
public class Demo{
static{
i = 20;
//这里的i, 是不能被用作运算的, 因为本质上 i 还未被定义
}
public static int i = 1;
}
这时候如果你在main函数输出i, 那么i=1;
结论:变量名首先被加载,而赋值的时候,无论是直接在变量上赋值还是在静态代码块中赋值,都是按照代码的顺序赋值的。