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一个对象都会被执行。

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

  • 相关阅读:
    接竹竿
    Vijos P1053 Easy SSSP
    计算机网络-五层协议和物理层
    代码阅读
    selenium自动化测试原理和设计的分享
    appium desktop 1.7 byName不能用,重写
    appium desktop 1.7 的swipe功能不能用,重写。
    appium在不同类中使用的是同一个session
    GIT 上传、ssh设置、一些命令。
    java 学习:在java中启动其他应用,由jenkins想到的
  • 原文地址:https://www.cnblogs.com/bmbi/p/5087901.html
Copyright © 2011-2022 走看看