zoukankan      html  css  js  c++  java
  • 静态Static

    package TestDemo;
    
    public class StaticDemo01 {
        static {
            System.out.println("StaticDemo01静态代码块执行");
        }
    
        // Java没有静态构造函数
        public  StaticDemo01(){
            System.out.println("StaticDemo01构造函数执行");
        }
    
        // 非静态代码块
        {
            System.out.println("StaticDemo01非静态代码块执行");
        }
    }
    package TestDemo;
    
    public class StaticDemo02 extends StaticDemo01 {
        static {
            System.out.println("StaticDemo02静态代码块执行");
        }
    
        // Java没有静态构造函数
        public  StaticDemo02(){
            System.out.println("StaticDemo02构造函数执行");
        }
    
        // 非静态代码块
        {
            System.out.println("StaticDemo02非静态代码块执行");
        }
    }
    package TestDemo;
    
    public class Test {
        public static void main(String[] args){
            StaticDemo02 demo = new StaticDemo02();
        }
    }

    输出

    StaticDemo01静态代码块执行
    StaticDemo02静态代码块执行
    StaticDemo01非静态代码块执行
    StaticDemo01构造函数执行
    StaticDemo02非静态代码块执行
    StaticDemo02构造函数执行

    结论:

    1. 静态代码块仅执行一次且在构造函数与非静态代码块之前执行

    2. 非静态代码块在构造函数之前执行

    3. 父类静态与非静态分别均在子类之前执行

    当类首次被加载时,静态变量就被分配到内存中,知道程序结束才会释放

  • 相关阅读:
    T-SQL 关闭数据库所有连接
    单页web应用(SPA)的简单介绍
    ES6—解构赋值
    ES6 — 新增关键字let、const
    一行能装逼的JavaScript代码
    Date 对象总结
    JS从头开始
    CSS基础知识点(二)——居中
    web标准的可用性和可访问性
    CSS基础知识点(二)——选择器
  • 原文地址:https://www.cnblogs.com/chenxingyang/p/11835930.html
Copyright © 2011-2022 走看看