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("静态代码块");
        }
        
    }

    结果:

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

    身体是革命的本钱,爱跑步,爱生活!
  • 相关阅读:
    CentOS7搭建elasticsearch集群
    Centos7搭建redis集群及安装sentinel
    编译安装haproxy开启支持SSL
    CentOS7单节点部署redis主从复制和sentinel
    CentOS7单节点部署redis-cluster
    搭建hadoop集群
    配置nginx为FastDFS的storage server提供http访问接口
    FastDFS分布式存储
    一键部署Kubernetes高可用集群
    一键部署ETCD集群脚本
  • 原文地址:https://www.cnblogs.com/caozx/p/9175181.html
Copyright © 2011-2022 走看看