java关于静态代码块的问题

来源:互联网 发布:手机淘宝返现怎么操作 编辑:程序博客网 时间:2024/05/17 09:00

一直把笔记记在本子上,过了一些时间之后就找不到,所以把一些笔记搬到这里,方便随时查询,这篇是关于静态代码块的笔记
加载一个类时,java中静态代码块首先执行:

  1. 调用一个类的静态成员变量或者方法,静态代码块会被首先执行,然后再执行其它,并且静态代码块只会被执行一次
  2. 通过对象来加载,也会先执行该类的静态代码块,然后再初始化构造方法中的语句,并且静态代码块只会被执行一次
    综上可以得出,只要包含有静态代码块的该类名字出现时,该类的静态代码块就会被执行一次。

另外,在继承中,执行顺序是:
父类静态代码块–>子类静态代码块–>父类构造方法–>子类构造方法

附上测试代码:

public class Person {    static int a = 2;    static    {        System.out.println("hahaha");    }    public Person()    {        System.out.println("hhahahhahahahhah");    }}class Child extends Person{    static     {        System.out.println("hehe");    }    public Child()    {        System.out.println("skjfala");    }}
public class PersonT {    public static void main(String[] args)     {        System.out.println(Person.a);        System.out.println(Person.a);        System.out.println(Person.a);        Person p = new Child();        p = new Child();    }}

运行之后结果如下:

hahaha222hehehhahahhahahahhahskjfalahhahahhahahahhahskjfala

可以看到,静态代码块首先被调用,并且只执行一次。

0 0
原创粉丝点击