java静态代码块/静态属性、构造块、构造方法执行、main方法、普通代码块的顺序

时间:2022-04-29 19:34:05

java静态代码块/静态属性、构造块、构造方法执行、main方法、普通代码块的顺序

这也是在笔试中的一个重要的考点,就有一个输出语句让你写出输出的结果。

理论知识:

静态代码块是:属于类的,在类加载时就自动执行。静态代码块定义时不能添加作用域符。

构造块是: 在类中定义的,且定义的位置与该类的其他的属性是相当的,就是不在该类的任何成员方法中,定义时直接用{ }包含即可,不用再添加其他任何的访问作用域符。构造块是每次创建对象都会执行一次构造块。

普通代码块:定义位置实在方法内部,在方法体内用 { } 包含即可。

下面给出测试的代码及测试结果,主要是查看执行的顺序,及多次创建对象时执行的顺序及结果。

public class Test_Static_Class {
//静态代码块
static {

System.out.println("静态代码块");
}
{
System.out.println("构造块1");
}
//构造方法
public Test_Static_Class() {
System.out.println("执行了构造方法");
}
//普通的成员方法
public void test() {
System.out.println("在方法中的普通代码块");
//普通的代码块
{
System.out.println("普通代码块");
}

}
public static void main(String[] args) {
System.out.println("执行了主方法");
System.out.println("--------------------");
new Test_Static_Class();
System.out.println("------第二次创建对象---------------");
new Test_Static_Class();
System.out.println("------第三次创建对象---------------");
new Test_Static_Class().test();
}
//构造块
{
System.out.println("构造块2");
}
}
运行的结果:

java静态代码块/静态属性、构造块、构造方法执行、main方法、普通代码块的顺序

多次创建对象,静态代码块只执行一次,且最先执行。

接下来执行的是构造快,构造块会每创建一个对象执行一次,且多个构造块会由上到下的执行。

在接下来执行的是构造方法,构造方法也是每创建一个对象就会执行一次。

在接下来就是调用普通的方法中的代码块,执行的顺序,在方法中没有什么特殊的。

对于静态属性,与静态代码块一样,也是在类加载时就会被自动执行,属于整个类的属性。

静态方法只能访问静态属性,一定不能访问非静态属性,但是注意这种说法的与我们通过对象来访问该静态属性,就是 对象名.非静态属性变量名, 这种方式就是我们通常在main方法中的一种访问方式。 这种访问的方式是可以的,但不能直接 非静态属性变量名 或静态属性方法。

对于静态方法中也不能直接使用this对象。