静态代码块非静态代码块(构造块)的区别

Posted bonniewss

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了静态代码块非静态代码块(构造块)的区别相关的知识,希望对你有一定的参考价值。

1、静态代码块是在类加载的时候执行的,格式为static{...}

2、非静态代码块(构造块),每调用一次构造方法就会执行一次,可以提取构造函数中公共的部分放在构造块,格式为{...}

代码示例:

public class Student {
    private String banji;
    private String name;
    private String age;
    static {
        System.out.println("加载1班的同学");
    }
    {
        this.banji="1班";
    }
    public void init(){
        System.out.println("init execute");
    }

    public Student(String name, String age) {
        this.name = name;
        this.age = age;
    }

    public String getBanji() {
        return banji;
    }

    public void setBanji(String banji) {
        this.banji = banji;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }
}


public class Test {
    public static void main(String[] args){
        Student student=new Student("bonnie","10");
        Student student2=new Student("xiaohong","20");

        System.out.println(student.getBanji()+","+student.getName()+","+student.getAge());
        System.out.println(student2.getBanji()+","+student2.getName()+","+student2.getAge());
    }
}

代码输出:

加载1班的同学
1班,bonnie,10
1班,xiaohong,20

 

以上是关于静态代码块非静态代码块(构造块)的区别的主要内容,如果未能解决你的问题,请参考以下文章

Java子父类间静态代码块非静态代码块构造方法的执行顺序

静态代码块非静态代码块(普通代码块)和构造方法的执行顺序

静态代码块非静态代码块构造函数的输出顺序

静态代码块非静态代码块构造函数的输出顺序

静态块非静态块(方发体)以及构造方法的执行顺序

Java代码块