先说执行顺序:我们在new一个对象时,如果类还没加载,就需要先将类加载到内存,此时就会执行静态代码块,在创建对象时,是先执行代码块,然后执行构造器。所以静态代码块、代码块、构造器的执行顺序是:静态代码块→代码块→构造器。
再说作用:静态代码块是用于初始化类的(在加载类时执行,只执行一次),代码块是用于初始化对象的(在创建对象时执行,每次创建对象时都执行),构造器是用于创建对象的。
静态代码块先于构造器执行 普通块先于构造块 只执行一次
凡是静态的与对象无关,先于对象存在的; 凡是静态的都是共享的
/
public class Test {
static {
Systemoutprintln("static");
}
{
Systemoutprintln("普通块2");
}
public Test() {
Systemoutprintln("构造器");
}静态变量只能定义在类的内部,不可以定义在静态块或方法中 可以在类内部定义静态变量,在静态块中进行初始化 *** 作,因为类的内部是不允许有 *** 作语句存在的,比如JDBC *** 作,所以可以在静态块static{} 中进行初始化 *** 作,如:JDBC 定义静态变量主要是为了供外部访问,定义在一个局部中外部没有权限访问,为什么要定义呢,而且不能定义
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)