zoukankan      html  css  js  c++  java
  • Java中静态代码块,代码块,构造方法优先级、区别及代码示例

    在项目中遇到了代码块的知识点,跑了下测试,写下结论

    • 代码优先级:静态代码块 -> 构造代码块 -> 构造方法
    • 多个代码块优先级,按照“先定义的代码先执行,后定义的代码后执行”原则执行
    • 静态代码块只执行一次
    • 构造代码块在类每次创建对象时都会执行
    • 静态代码块不能存在于任何方法体内

    1.测试一

     1 public class CodeBlock01 {
     2   {
     3     System.out.println("普通代码块1");
     4   }
     5   static {
     6     System.out.println("静态代码块");
     7   }
     8 
     9   public CodeBlock01() {
    10     System.out.println("构造方法");
    11   }
    12 
    13   {
    14     System.out.println("普通代码块2");
    15   }
    16 }
    1   @Test public void testStaticCode(){
    2     new CodeBlock01();
    3     new CodeBlock01();
    4   }

    执行结果:

    静态代码块
    普通代码块1
    普通代码块2
    构造方法
    普通代码块1
    普通代码块2
    构造方法

    结论:

    1. 优先级:静态代码块 -> 代码块 -> 构造方法
    2. 静态代码块只会执行一次
    3. 代码块会在类每次创建对象的时候都创建,就是每次构造方法前都会执行

    2.测试二

     1 public class CodeBlock02 {
     2   {
     3     System.out.println("普通代码块01");
     4   }
     5 
     6   {
     7     System.out.println("普通代码块02");
     8   }
     9 
    10   public CodeBlock02(){
    11     System.out.println("构造方法");
    12   }
    13 }
    1   @Test public void testCodeBlock(){
    2     new CodeBlock02();
    3   }

    执行结果:

    普通代码块01
    普通代码块02
    构造方法

    结论:

    代码块执行顺序,按照“先定义的代码先执行,后定义的代码后执行”原则。

  • 相关阅读:
    Windows ETW 学习与使用三
    暗云Ⅳ对SATA磁盘MBR Hook探索
    msahci代码调试备份
    mimikatz使用命令记录
    Windows ETW 学习与使用一
    RabbitMQ 实现延迟队列
    Redis 脱坑指南
    浅析 ThreadLocal
    IDEA2020.2.3破解
    用友NC 模块 简写(瞎猜的)
  • 原文地址:https://www.cnblogs.com/liyiran/p/5682675.html
Copyright © 2011-2022 走看看