package smartt.styy.auth.model.voRsp;
public class Test {
static {
String test5="555";//局部变量
test2 ="2222222";
//System.out.println("此处的test2可以在static块中赋值,但不能调用:"+test2);
System.out.println("静态代码块:"+test5);
}
public static final String test1="111"; //常量
public static String test2="222"; //静态变量
public String test3="333"; //成员变量
public void ok(){
String test4="4444"; //局部变量
System.out.println("普通方法加载:"+test4);
}
//静态属性是先于代码块加载的
//静态代码块
//构造代码块
{
test2 ="111111";
System.out.println("构造代码块:"+test2);
}
public static void main(String[] args){
Test te =new Test();
te.ok();
}
}
输出结果:
静态代码块:555
构造代码块:111111
普通方法加载:4444
执行顺序:
1、类内容(静态变量、静态初始化块) => 实例内容(变量、初始化块、构造器)
2、父类的(静态变量、静态初始化块)=> 子类的(静态变量、静态初始化块)=> 父类的(变量、初始化块、构造器)=> 子类的(变量、初始化块、构造器)
初始化块可以对在它之后定义的变量赋值,但不能访问(如打印)。
变量最终值:一个变量,若显示初始化、初始化块对该变量赋值、构造方法对该变量赋值同时存在,则变量最终值如何确定:
1、按执行顺序
2、若对变量赋值的初始化块在变量定义前时:若变量显示初始化了则最终为显示初始化值,否则为初始化块的赋值。