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

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

  • 相关阅读:
    哪里错了
    任性
    【转】JVM 堆最大能调多大?
    【Android】PA4D_CH7 文件、保存状态和首选项
    【Android】PA4D_CH6 使用Internat资源
    Think In Java 多态学习
    【转】Myeclipse 查看Jar文件里面源码中文乱码 问题解决
    [转载]getBoundClientRect函数详解
    Kettle 环境变量设置
    SQL Server 2012 不支持创建连接服务器到 2000 版本,及其替代方案
  • 原文地址:https://www.cnblogs.com/bmbi/p/5087901.html
Copyright © 2011-2022 走看看