同一个类中的 静态代码块 构造代码块 构造方法

执行顺序:静态代码块 -- 构造代码块 -- 构造方法   (与编写代码的顺序无关)

 


class Code {
// 静态代码块
static {
int x = 1;
System.out.println(x);
}

// 构造代码块
{
int x = 2;
System.out.println(x);
}

// 构造方法
public Code() {
int x = 3;
System.out.println(x);
}

// 构造代码块
{
int x = 2;
System.out.println(x);
}

// 静态代码块
static {
int x = 1;
System.out.println(x);
}
}

public class test {
public static void main(String[] args) {
Code c1 = new Code();
Code c2 = new Code();
}
}
 

 

执行结果

 

 

new了两个对象c1,c2   所以构造代码块和构造方法都执行了2次,且构造代码块优先构造方法执行

静态static是随着类的加载而加载  所以只执行了1次

 

 

 

最后,再结合main方法的 

class Code {
    // 静态代码块
    static {
        System.out.println("我是静态代码块");
    }

    // 构造代码块
    {
        System.out.println("我是构造代码块");
    }

    // 构造方法
    public Code() {
        System.out.println("我是构造方法");
    }
}

public class test {
    static {
        System.out.println("我是public类中的静态代码块");
    }

    public static void main(String[] args) {
        System.out.println("1.我是main方法");

        Code c1 = new Code();
        System.out.println("2.我是main方法");
        Code c2 = new Code();
    }
}

 

执行结果

 

 

 

结论:public类中的静态代码块先执行

 

posted @ 2022-03-01 15:26  Ging2000  阅读(67)  评论(0)    收藏  举报