java类的三种初始化块的执行顺序

java类的三种初始化块的执行顺序

java里初始化一个类的对象,通过初始化块或者构造方法进行数据赋值。与其相关的执行代码有这么几种:

静态初始化块

初始化块

构造方法

静态初始化块

静态初始化块只在类加载时执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。

非静态初始化块

非静态初始化块在每次初始化实例对象的时候都执行一次,可以给任意变量赋值。

构造方法

在每次初始化实例对象时调用。

重点:执行顺序->

在加载类时执行一次静态初始化块(之后不再调用)。

在每次初始化实例对象时:先执行非静态初始化块,

再执行构造方法。

若是概念不好懂,请看如下实例:

package com.test;

public class Test{

    String name; // 声明变量name

    String sex; // 声明变量sex

    static int age;// 声明静态变量age

    // 构造方法

    public Test() {

        System.out.println("通过构造方法初始化name");

        name = "tom";

    }

    // 初始化块

    {

        System.out.println("通过初始化块初始化sex");

        sex = "男";

    }

    // 静态初始化块

    static {

        System.out.println("通过静态初始化块初始化age");

        age = 20;

    }

    public void show() {

        System.out.println("姓名:" + name + ",性别:" + sex + ",年龄:" + age);

    }

    public static void main(String[] args) {

        // 创建对象

        Main test1 = new

Test

();

        Main test2= new

Test

();

        // 调用对象的show方法

        test1.show();

        test2.show();

    }

}

output:

通过静态初始化块初始化age

通过初始化块初始化sex

通过构造方法初始化name

通过初始化块初始化sex

通过构造方法初始化name

姓名:tom,性别:男,年龄:20

姓名:tom,性别:男,年龄:20

---------------------

作者:凌凌小博客

来源:CSDN

原文:https://blog.csdn.net/qq_35923749/article/details/79547373

版权声明:本文为博主原创文章,转载请附上博文链接!

你可能感兴趣的:(java类的三种初始化块的执行顺序)