10.代码块的面试题

每种代码块特点:

局部代码块:

以”{}”划定的代码区域,此时只需要关注作用域的不同即可
方法和类都是以代码块的方式划定边界的

构造代码块

优先于构造方法执行,构造代码块用于执行所有对象均需要的初始化动作
※每创建一个对象均会执行一次构造代码块。

静态代码块

它优先于主方法执行、优先于构造代码块执行,当以任意形式第一次使用到该类时执行。
该类不管创建多少对象,静态代码块只执行一次。
可用于给静态变量赋值,用来给类进行初始化。

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无参空构造执行");
    }
}

你可能感兴趣的:(10.代码块的面试题)