Java中构造代码块、static代码块和局部代码块的区别

class StaticCode{
    int age;
    // static 代码块
    static{
        System.out.print("static ");
    }
    //构造代码块
    {
        System.out.print("55 ");
    }    
    // 构造函数
    StaticCode(int age){
        this.age=age;
        System.out.print(age+",");
    }
    void show(){
    // 局部代码块  //方法中
        {
            int age=30;
        }
        System.out.print("show:"+age+",");
    }
}
class StaticCodeDemo{
    public static void main(String[] args){
        StaticCode p1=new StaticCode(20);  // 1
        p1.show();                        //  2
        StaticCode p2=new StaticCode(20); //  3
    }
}

执行结果为:static,55,20,show,55,20

分析 :
1、先执行StaticCode这个类,所以static
2、创建p1对象,执行构造代码块,55
3、执行构造函数初始化,20
4、执行p1.show(),show:20
5、 创建p2对象,执行构造代码块,55
6、执行构造函数初始化,20
总结: static 代码块随着类的加载,只加载一次。作用是初始化类。

构造代码块 --> 可以给所有对象进行初始化的。创建几个对象就调用几次,是给对象进行通用性的初始化。
构造函数 --> 给对应的对象进行针对性的初始化。
局部代码块 --> 限定函数中变量的生命周期,age=30局部代码执行完。自动释放掉了。

你可能感兴趣的:(Java中构造代码块、static代码块和局部代码块的区别)