每种代码块特点:
局部代码块:
以”{}”划定的代码区域,此时只需要关注作用域的不同即可
方法和类都是以代码块的方式划定边界的
构造代码块
优先于构造方法执行,构造代码块用于执行所有对象均需要的初始化动作
※每创建一个对象均会执行一次构造代码块。
静态代码块
它优先于主方法执行、优先于构造代码块执行,当以任意形式第一次使用到该类时执行。
该类不管创建多少对象,静态代码块只执行一次。
可用于给静态变量赋值,用来给类进行初始化。
package com.itheima_04;
/*
* 面试题:
* Coder静态代码块执行 --- Coder构造代码块执行 ---Coder无参空构造执行
*
* BlockTest静态代码块执行 --- BlockTest的主函数执行 --- Coder静态代码块执行 --- Coder构造代码块执行
* --- Coder无参空构造执行 --- Coder构造代码块执行 --- Coder无参空构造执行
*/
public class BlockTest {
//不会被执行,因为没有创建对象。只有在创建对象时才会被调用
//-----
static {
System.out.println("BlockTest静态代码块执行");
}
{
System.out.println("BlockTest构造代码块执行");
}
public BlockTest() {
System.out.println("BlockTest无参空构造执行");
}
//!---
public static void main(String[] args) {
System.out.println("BlockTest的主函数执行");
Coder c = new Coder();
Coder c2 = new Coder();
}
}
class Coder {
static {
System.out.println("Coder静态代码块执行");
}
{
System.out.println("Coder构造代码块执行");
}
public Coder() {
System.out.println("Coder无参空构造执行");
}
}