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局部代码执行完。自动释放掉了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。