zoukankan      html  css  js  c++  java
  • static块语句

    1、static{}(即static块),会在类被加载的时候执行且仅会被执行一次,一般用来初始化静态变量和调用静态方法。

    主要语句:

    package exam2;
    
    public class A {
    
        public A() {
            System.out.println("constructor of A");
        }
    
        static {
            System.out.println("static block of A");
        }
    
        public static void main(String[] args) {
            // 因为执行main(),所以A会被加载,A的static{}会执行,但是不会执行A的构造函数,除非有new A()。
        }
    
    }
    
    class B {
        static int b;
    
        public B() {
            System.out.println("constructor of B");
        }
    
        static {
            System.out.println("static block of B");
        }
    
    }
    class C extends B{
        public C() {
            System.out.println("constructor of C");
        }
    
        static {
            System.out.println("static block of C");
        }
    }

    输出为A的static语句.

    (1)当main()函数的语句为

    B b;//不会执行B的static块语句

    (2)当main()函数的语句为

    B b=new B();//执行B的static块语句,然后执行B的construct语句

    (3)当main()函数的语句为

    System.out.println(B.b);// 单单执行这条语句会执行B的static块语句,即使b没有赋值

    (4)

    B b=new C();//先执行父类B的static,然后执行子类C的static,然后执行父类B的构造函数,最后执行子类的构造函数

    注意:如果之前已经执行过B的static,再B b=new C(),不会再输出static语句了,类只会加载一次。

    Done

  • 相关阅读:
    ReentrantLock重入锁
    Java对象序列化和反序列
    echarts踩坑笔记
    金融风控之贷款违约预测笔记
    go安装模块
    vasp计算轨道吸附
    html
    css/js 小技巧
    python 调用父类方法:super && 直接使用父类名
    python 多线程
  • 原文地址:https://www.cnblogs.com/xingyyy/p/4060810.html
Copyright © 2011-2022 走看看