zoukankan      html  css  js  c++  java
  • static代码块与{}代码块的比较

    第一个例子:

    public class StaticDemo {
        {
            System.out.println("{} 代码块");
        }
        static{
            System.out.println("static 代码块");
        }
        
        public static void main(String[] args) {
            
        }
    
    }
    static 代码块
    View Code

          结论:类的加载会执行static代码块,不会执行{}代码块。

    第二个例子:

    public class StaticDemo2 {
        
        {
            System.out.println("{} 代码块");
        }
        
        static{
            System.out.println("static 代码块");
        }
        
        public static void main(String[] args) {
            new StaticDemo2();
        }
    
    }
    static 代码块
    {} 代码块
    View Code

         结论: new一个类的实例,会先执行static代码块,再执行{}代码块。

    第三个例子:

    public class StaticDemo3 {
        
      public StaticDemo3(){
            System.out.println("构造函数");
        }
     
        {
            System.out.println("{} 代码块");
        }
        static{
            System.out.println("static 代码块");
        }
        
        public static void main(String[] args) {
            new StaticDemo3();
        }
    
    }
    static 代码块
    {} 代码块
    构造函数
    View Code

          结论:new一个类的实例,会先执行static代码块,再执行{}代码块,最后执行构造函数。

    第四个例子:

    public class StaticDemo4 {
        
      public StaticDemo4(){
            System.out.println("构造函数");
        }
     
        {
            System.out.println("{} 代码块");
        }
        static{
            System.out.println("static 代码块");
        }
        
        public static void main(String[] args) {
            new StaticDemo4();
            new StaticDemo4();
        }
    
    }
    static 代码块
    {} 代码块
    构造函数
    {} 代码块
    构造函数
    View Code

          总结:static{}代码块,会在类初次被加载的时候被执行一次。{}代码块和构造函数一样,每次new一个对象都会被执行。

    注:当有多个带不同参数的构造函数需要执行相同的初始化代码,可以将这些代码提起出来放在{}代码块中。

  • 相关阅读:
    #线段树,矩阵乘法#LOJ 3264「ROIR 2020 Day 2」海报
    #线段树#洛谷 4428 [BJOI2018]二进制
    #Trie#洛谷 7717 「EZEC-10」序列
    shell脚本生成双色球号码
    k8s的tomcat多pod session会话保持配置
    国产系统优麒麟系统使用
    grdi报错--grid的asm磁盘丢失处理方法
    centos7上安装oracle的sqlplus客户端
    linux挂载
    linux占用100%cpu的java处理
  • 原文地址:https://www.cnblogs.com/bmbi/p/5087901.html
Copyright © 2011-2022 走看看