java类创建时里面成员执行的先后顺序

Posted 段合江

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java类创建时里面成员执行的先后顺序相关的知识,希望对你有一定的参考价值。

 

静态代码块在类第一次使用的时候执行一次,在构造函数执行之前执行。只要用到类,哪怕new对象(比如只声明变量)也会被执行,且只执行一次。一般用于对类进行初始化。

 

先执行静态代码块,静态成员(谁在前就先执行谁)。无论new几次 静态代码块和静态成员只执行一次

再执行成员变量,最后构造函数。new几次 成员变量和构造函数 执行几次。

代码:

1.声明StaitcBlock类

public class StaticBlock1 {
    private static String TAG="333";

    //成员变量
    private  int age1=setAge();

    //构造函数
    public  StaticBlock1(){
        Log.e(TAG, "构造函数");
    }

    //静态代码块
    static{
        Log.e(TAG, "静态代码块 " );
    }

    //静态成员
    private static int age2=setAge2();


    public static void main(String[] args) {
        StaticBlock1 b1=new StaticBlock1();

        StaticBlock1 b2=new StaticBlock1();
    }



    private int setAge(){
        Log.e(TAG, "getAge1: 方法1" );
        return 3;
    }

    private static int setAge2(){
        Log.e(TAG, "getAge2: 方法2" );

        return 333;
    }

}

2.在Activity中创建StaticBoloc类

 Log.e(TAG, "onCreate: ------------------------开始" );
        StaticBlock1 b1=new StaticBlock1();
        Log.e(TAG, "----------------------------------------------------------------------------------" );
        StaticBlock1 b2=new StaticBlock1();

 

3.结果

 

以上是关于java类创建时里面成员执行的先后顺序的主要内容,如果未能解决你的问题,请参考以下文章

一文详解:Java中父子类静态块构造块构造方法成员变量之间的初始化先后顺序与执行先后顺序

java第五章:面向对象(oop)之 static关键字

Java代码块

Java类的成员之四:代码块.

代码块(初始化块)

Java对象初始化顺序