zoukankan      html  css  js  c++  java
  • 静态初始化块与非静态初始化块有什么区别?

      所谓“块”,就是用{}所包含的代码段,它们在逻辑上常常是一个整体。初始化块主要用于对象的初始化操作,在创建对象时调用,可以用于完成初始化属性值、加载其他类等功能。初始化块的执行顺序在构造方法之前,如果构造方法多次重载,此时可以考虑将构造方法中共通的代码提到初始化块中定义。

      非静态初始化块主要用于对象的初始化操作,在每次创建对象时都要调用一次,其执行顺序在构造方法之前。由于非静态成员不能在静态方法中使用,同样也不能在静态初始化块中,因此,静态初始化块主要用于初始化静态变量和静态方法。静态初始化块只调用一次,是在类被第一次加载到内存时,并非要创建对象才执行。

    import org.junit.Test;
    
    public class EqualsTest {
        @Test
        public void test(){
            Print test1 = new Print();
            Print test2 = new Print();
        }
    }
    
    class Print{
        {
            System.out.println("非静态代码块");
        }
        static{
            System.out.println("静态代码块");
        }
        
    }

    结果:

      静态初始化块与非静态初始化块有一定的区别,静态的初始化块比非静态初始化块执行要早,而且静态初始化块只执行一次,非静态的初始化块可执行多次。静态初始化块的执行时机需要注意,它在类加载器第一次加载类时调用,不一定非要创建对象,例如使用类名.静态方法名。

    身体是革命的本钱,爱跑步,爱生活!
  • 相关阅读:
    sql函数
    sql日期
    Windows下串口编程
    Libreoffice/Office:禁止首字母自动大写功能
    convert:图片转pdf失败
    LibreOffice/Calc:单元格设置下拉菜单
    Ubuntu:查询计算机软硬件信息
    tar:文件打包归档
    中科大自主招生2018年笔试数学之五
    文件分割与合并
  • 原文地址:https://www.cnblogs.com/caozx/p/9175181.html
Copyright © 2011-2022 走看看