- BlockTest类
package com.itheima_05;
/*
* BlockTest的静态代码块执行了
* BlockTest的主方法执行了
* Coder的静态代码块执行了
* Coder的构造代码块执行了
* Coder的构造方法执行了
* Coder的构造代码块执行了
* Coder的构造方法执行了
*/
public class BlockTest {
public static void main(String[] args) {
System.out.println("BlockTest的主方法执行了");
Coder coder=new Coder();
Coder coder2=new Coder();
}
public BlockTest() {
System.out.println("BlockTest的构造方法执行了");
}
{
System.out.println("BlockTest的构造代码块执行了");
}
static {
System.out.println("BlockTest的静态代码块执行了");
}
}
- Coder类
package com.itheima_05;
public class Coder {
public Coder() {
System.out.println("Coder的构造方法执行了");
}
{
System.out.println("Coder的构造代码块执行了");
}
static {
System.out.println("Coder的静态代码块执行了");
}
}
- 运行结果
- Conclusion
静态代码块只执行一次,在类加载的时候一起加载好了,所以最先执行。
构造代码块在构造方法之前执行。
构造方法最后执行。
这里的BlockTest的构造方法和构造代码块因为没有new对象所以没有执行。